Skip to content

Commit e1e162c

Browse files
committed
JPA
1 parent 43d967d commit e1e162c

31 files changed

Lines changed: 260 additions & 340 deletions

File tree

jpa-hibernate-examples/jpa-hibernate-one-to-one-hsql/pom.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,15 @@
2727
</dependency>
2828

2929
<dependency>
30-
<groupId>org.hsqldb</groupId>
31-
<artifactId>hsqldb</artifactId>
30+
<groupId>mysql</groupId>
31+
<artifactId>mysql-connector-java</artifactId>
3232
<scope>runtime</scope>
3333
</dependency>
34+
35+
<dependency>
36+
<groupId>org.projectlombok</groupId>
37+
<artifactId>lombok</artifactId>
38+
</dependency>
3439
</dependencies>
3540

3641
<build>
Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,37 @@
11
package com.hellokoding.jpa;
22

3-
import com.hellokoding.jpa.model.Book;
4-
import com.hellokoding.jpa.model.BookDetail;
5-
import com.hellokoding.jpa.repository.BookRepository;
6-
import org.slf4j.Logger;
7-
import org.slf4j.LoggerFactory;
8-
import org.springframework.beans.factory.annotation.Autowired;
3+
import com.hellokoding.jpa.model.IDCard;
4+
import com.hellokoding.jpa.model.Person;
5+
import com.hellokoding.jpa.repository.IDCardRepository;
6+
import com.hellokoding.jpa.repository.PersonRepository;
7+
import lombok.RequiredArgsConstructor;
98
import org.springframework.boot.CommandLineRunner;
109
import org.springframework.boot.SpringApplication;
1110
import org.springframework.boot.autoconfigure.SpringBootApplication;
1211

13-
import java.util.ArrayList;
14-
import java.util.List;
12+
import javax.transaction.Transactional;
13+
import java.util.Arrays;
1514

15+
@RequiredArgsConstructor
1616
@SpringBootApplication
1717
public class Application implements CommandLineRunner {
18-
private static final Logger logger = LoggerFactory.getLogger(Application.class);
19-
20-
@Autowired
21-
private BookRepository bookRepository;
18+
private final IDCardRepository idCardRepository;
19+
private final PersonRepository personRepository;
2220

2321
public static void main(String[] args) {
2422
SpringApplication.run(Application.class, args);
2523
}
2624

2725
@Override
28-
public void run(String... strings) throws Exception {
29-
// save a couple of books
30-
List<Book> books = new ArrayList<>();
31-
books.add(new Book("Book A", new BookDetail(49)));
32-
books.add(new Book("Book B", new BookDetail(59)));
33-
books.add(new Book("Book C", new BookDetail(69)));
34-
bookRepository.saveAll(books);
26+
@Transactional
27+
public void run(String... strings) {
28+
Person p1 = new Person("Tom");
29+
Person p2 = new Person("Daisy");
30+
Person p3 = new Person("Alex");
31+
personRepository.saveAll(Arrays.asList(p1, p2, p3));
3532

36-
// fetch all books
37-
for (Book book : bookRepository.findAll()) {
38-
logger.info(book.toString());
39-
}
33+
idCardRepository.save(new IDCard(p1));
34+
idCardRepository.save(new IDCard(p2));
35+
idCardRepository.save(new IDCard(p3));
4036
}
4137
}

jpa-hibernate-examples/jpa-hibernate-one-to-one-hsql/src/main/java/com/hellokoding/jpa/model/Book.java

Lines changed: 0 additions & 60 deletions
This file was deleted.

jpa-hibernate-examples/jpa-hibernate-one-to-one-hsql/src/main/java/com/hellokoding/jpa/model/BookDetail.java

Lines changed: 0 additions & 49 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.hellokoding.jpa.model;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
import javax.persistence.*;
7+
import java.io.Serializable;
8+
import java.util.UUID;
9+
10+
@Getter @Setter
11+
@Entity
12+
public class IDCard implements Serializable {
13+
@Id
14+
@GeneratedValue(strategy = GenerationType.IDENTITY)
15+
private int personId;
16+
17+
@OneToOne(cascade = CascadeType.ALL, optional = false)
18+
@PrimaryKeyJoinColumn(name = "person_id", referencedColumnName = "id")
19+
private Person person;
20+
21+
@Column(unique = true, nullable = false)
22+
private String code = UUID.randomUUID().toString();
23+
24+
public IDCard(Person person) {
25+
this.person = person;
26+
}
27+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.hellokoding.jpa.model;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
import javax.persistence.*;
7+
8+
@Getter
9+
@Setter
10+
@Entity
11+
public class Person {
12+
@Id
13+
@GeneratedValue(strategy = GenerationType.IDENTITY)
14+
private int id;
15+
16+
private String name;
17+
18+
public Person(String name) {
19+
this.name = name;
20+
}
21+
}

jpa-hibernate-examples/jpa-hibernate-one-to-one-hsql/src/main/java/com/hellokoding/jpa/repository/BookRepository.java

Lines changed: 0 additions & 7 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.hellokoding.jpa.repository;
2+
3+
import com.hellokoding.jpa.model.IDCard;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface IDCardRepository extends JpaRepository<IDCard, Integer>{
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.hellokoding.jpa.repository;
2+
3+
import com.hellokoding.jpa.model.Person;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
6+
public interface PersonRepository extends JpaRepository<Person, Integer>{
7+
}
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,9 @@
1-
spring.jpa.hibernate.ddl-auto=create-drop
2-
spring.jpa.show-sql=true
1+
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
2+
spring.datasource.username=root
3+
spring.datasource.password=hellokoding
4+
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
5+
6+
spring.jpa.hibernate.ddl-auto=create
7+
spring.jpa.database-platform=org.hibernate.dialect.MySQL57Dialect
8+
spring.jpa.generate-ddl=true
9+
spring.jpa.show-sql=true

0 commit comments

Comments
 (0)