As an Android dev, I am used to build databases with sqlite without any annotations. This is working for me since years in real world apps. So diving in the Hibernate stuff, it feels like a pain in the ass to do even simple inserts. I will give JDBC a try! Thanks for your tutorial!
I never used Spring data JDBC before but this video opens a new perspective for me about having more understandement and about relationships. Thank you Dan ! This makes wanna dive more and how to do a few things with spring data JDBC : 1. Pagination of the Comments within a Post when reading a Post, assuming we had to add it as feature 2. Filtering and sorting of Comments with a given post 3. Transactions between Post and Author
Awesome presentation! I have used Spring Data JDBC in one of my side projects. Initially it took some time to understand, but it simplifies many things as compared to JPA. Thanks.
Awesome tutorial, I liked the in aggregate solution i.e between Post and Comment. I am curious on how you would go about to solve to oddities below 1. Pagination of the Comments within a Post when reading a Post, assuming we had to add it as feature 2. Filtering and sorting of Comments with a given post 3. Transactions between Post and Author
Over the years being in different teams and working with different people, i have come to the conclusion that JPA and Hibernate is poorly understood by the majority of people and usually it makes more harm than help. I personally always use Spring JDBC and write plan SQL queries for everything along with RowMappers. Having a strong grasp of SQL helps me have full control over everything and i don't have to care about some strange behavior of JPA and Hibernate. Anyway if the people at the team understand it properly, than i see no issues with using it.
Nice walkthrough! I'm not sure (Post, Comment) is a good aggregate. It may work for a tiny blog where posts usually have 10 comments, but as soon as you go in the hundreds & thousands of comments, with comment threads, this stops being a viable design. Treating it as a consistency boundary in that case is crazy.
Great tutorial, it was really helpful. One thing that left me a bit disappointed is you mentioned the "version" column in the Post entity, which is something specific to Spring Data JDBC but did not really explain it. Do you know where I can read more about this concept? Cheers
Hi Dan! I want to know how to implement pagination + inner conditions like (condition OR condition) AND (condition OR condition) in spring data jdbc. Please help out on this
So if I want to see only list of posts without comments on /posts, I need to look at them as separate aggregates, right? And in single post view I would load that comments (/posts/1).
Hi Dan, this is very good tutorial. Some doubts, could you please help in clarifying. 1) In spring-data-jdbc, how are classes mapped to actual table where data gets persisted? In the application that you showed, Post is a class (and since we are not using JPA, so we don't have @Entity annotation), how does this module come to know which table in DB does it need to persist a class? 2) Since spring-data-jdbc doesn't use any ORM , so how does this mapping is happening 3) I was under (mis) conception that Repository is available for spring-data-jpa only , but it seems that Repository concept is in spring-data-jdbc as well (so we can use simple repo.save()) - this is confusion; as same / similar functionality is provided by spring-data-jpa; what exactly is the differnce and how sping-data-jdbc is able to achieve this, even without having ORM (which does table == Class mapping etc.). Could you please help in clarifying this doubt?
I was thinking that a comment would also be associated with an 'Author' i.e. the author of that comment. Could aggregates overlap to share entities? In this case, 'Comment' would be shared with the aggregate having 'Author' and the other one having 'Post'. Could this be possible?
I'm puzzled Entitys identity should be based on primary key, and on primary key only (otherwise it is a value object) However, you are using record as Author entity without overriding equals (and hashCode). How can this even work?
Hi Dan, thank you so much on this video, I am big fun of your work :). I downloaded and tried code from this video but it didn't work. Can you please check? Thank you so much.
This is really insane... jdbc, jdbctemplate, jpa, spring data jpa, spring data jdbc, hibernate... It's really hard to understand what is what and when to use what...
finally someone smart talking about tracking entity changes! thank you so much Dan!
Thank you, Max!
As an Android dev, I am used to build databases with sqlite without any annotations. This is working for me since years in real world apps. So diving in the Hibernate stuff, it feels like a pain in the ass to do even simple inserts.
I will give JDBC a try! Thanks for your tutorial!
"I've been blogging for 20 years and I've never got comments" ... Savage!
Also, subbed! Thank you, Dan!
Thanks for clearing my confusion about Aggregates and how they are related.
You are welcome!
I never used Spring data JDBC before but this video opens a new perspective for me about having more understandement and about relationships. Thank you Dan ! This makes wanna dive more and how to do a few things with spring data JDBC :
1. Pagination of the Comments within a Post when reading a Post, assuming we had to add it as feature
2. Filtering and sorting of Comments with a given post
3. Transactions between Post and Author
I found this channel today and I had to subscribe. Great content 👏
Thank you!
this channel is pure gold
Awesome presentation! I have used Spring Data JDBC in one of my side projects. Initially it took some time to understand, but it simplifies many things as compared to JPA. Thanks.
Your channel is a goldmine!
Thank you Dan. Was looking for this
Glad to help
Awesome tutorial, I liked the in aggregate solution i.e between Post and Comment. I am curious on how you would go about to solve to oddities below
1. Pagination of the Comments within a Post when reading a Post, assuming we had to add it as feature
2. Filtering and sorting of Comments with a given post
3. Transactions between Post and Author
Over the years being in different teams and working with different people, i have come to the conclusion that JPA and Hibernate is poorly understood by the majority of people and usually it makes more harm than help. I personally always use Spring JDBC and write plan SQL queries for everything along with RowMappers. Having a strong grasp of SQL helps me have full control over everything and i don't have to care about some strange behavior of JPA and Hibernate.
Anyway if the people at the team understand it properly, than i see no issues with using it.
Nice walkthrough! I'm not sure (Post, Comment) is a good aggregate. It may work for a tiny blog where posts usually have 10 comments, but as soon as you go in the hundreds & thousands of comments, with comment threads, this stops being a viable design. Treating it as a consistency boundary in that case is crazy.
Loved your video
Appreciate it!
😁I will read ur blogs and leave comments since today.
Dan, i found that no comment input text in your blogs. NVM, i will read your github discussions.
I turned off blog comments. You can always email me or reach out to me on twitter. check out danvega.dev for all of my info.
Great tutorial, it was really helpful. One thing that left me a bit disappointed is you mentioned the "version" column in the Post entity, which is something specific to Spring Data JDBC but did not really explain it. Do you know where I can read more about this concept? Cheers
great tutorial. could you please show how to solve this using JPA and entity mapping? thanks
Great suggestion! github.com/danvega/office-hours/discussions/41
Hi Dan! I want to know how to implement pagination + inner conditions like (condition OR condition) AND (condition OR condition) in spring data jdbc. Please help
out on this
If i were to change database feom postgres to mysql, say. How much effort would it take? What are the steps to proceed
@Dan Vega Please do one on Spring Data JPA
So if I want to see only list of posts without comments on /posts, I need to look at them as separate aggregates, right? And in single post view I would load that comments (/posts/1).
Around 33:19 you are querying rows from comment table. There's no primary key. How can we have multiple comments on the same Post-row?
Hello, can you explain me why i have "Internal Server Error" when i run this https request in postman? Thanks
Assume there have many comments, if the JDBC will delete all comments before add new one to make sure consistent but result in lower performance?
Hi Dan, this is very good tutorial. Some doubts, could you please help in clarifying. 1) In spring-data-jdbc, how are classes mapped to actual table where data gets persisted? In the application that you showed, Post is a class (and since we are not using JPA, so we don't have @Entity annotation), how does this module come to know which table in DB does it need to persist a class? 2) Since spring-data-jdbc doesn't use any ORM , so how does this mapping is happening 3) I was under (mis) conception that Repository is available for spring-data-jpa only , but it seems that Repository concept is in spring-data-jdbc as well (so we can use simple repo.save()) - this is confusion; as same / similar functionality is provided by spring-data-jpa; what exactly is the differnce and how sping-data-jdbc is able to achieve this, even without having ORM (which does table == Class mapping etc.). Could you please help in clarifying this doubt?
What's the use of author repository?
can we use spring data jdbcd combine with spring data jpa
I was thinking that a comment would also be associated with an 'Author' i.e. the author of that comment. Could aggregates overlap to share entities? In this case, 'Comment' would be shared with the aggregate having 'Author' and the other one having 'Post'. Could this be possible?
I'm puzzled
Entitys identity should be based on primary key, and on primary key only (otherwise it is a value object)
However, you are using record as Author entity without overriding equals (and hashCode). How can this even work?
Hey Dan. Can I do same thing without using JDBC using only java 8 stream?
thanks a lot. great tutorial
You are welcome!
Put everything related to post in one package, model, repository, service and controller are related to each other.
Do we have to mark command line runner as @Bean explicitly, will spring not automatically take into context as it's comnand line runner..
Yes you need to mark it as a bean. If you create a class that implements the CLR you will need to mark that with @Component.
Thank you
You're welcome
Why not use Lombok for getters and setters
Thanks.
You're welcome
great video
Thank you, Igor!
Where is your blog? I want to leave a comment.
Hi Dan, thank you so much on this video, I am big fun of your work :). I downloaded and tried code from this video but it didn't work. Can you please check? Thank you so much.
This is really insane... jdbc, jdbctemplate, jpa, spring data jpa, spring data jdbc, hibernate... It's really hard to understand what is what and when to use what...
Great. Just when i was about to quit on dealing a simple öne-to-many rel. with JPA
AHAHAHA I hate this HATE relations in JPA, now, I'm like you
How Data JDBC knows that the COLUMN 'first_name' in the DB refers to the class attribute 'firtstName' ?