diff --git a/2021-05/spring-11-data-jpa/.gitignore b/2021-05/spring-11-data-jpa/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2021-05/spring-11-data-jpa/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2021-05/spring-11-data-jpa/pom.xml b/2021-05/spring-11-data-jpa/pom.xml new file mode 100644 index 00000000..c8e0ebef --- /dev/null +++ b/2021-05/spring-11-data-jpa/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + ru.otus + spring-11-data-jpa + 1.0 + + pom + + + spring-11-exercise + spring-11-solution + + diff --git a/2021-05/spring-11-data-jpa/spring-11-exercise/.gitignore b/2021-05/spring-11-data-jpa/spring-11-exercise/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-exercise/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2021-05/spring-11-data-jpa/spring-11-exercise/pom.xml b/2021-05/spring-11-data-jpa/spring-11-exercise/pom.xml new file mode 100644 index 00000000..3fbbfd94 --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-exercise/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + ru.otus + spring-11-exercise + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.5.1 + + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.h2database + h2 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/Main.java b/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/Main.java new file mode 100644 index 00000000..448cf757 --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/Main.java @@ -0,0 +1,24 @@ +package ru.otus.spring11; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +//import ru.otus.spring10.repostory.PersonRepository; + +import javax.annotation.PostConstruct; + +@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") +@SpringBootApplication +public class Main { + + public static void main(String[] args) { + SpringApplication.run(Main.class); + } + +// @Autowired +// private PersonRepository repository; + + @PostConstruct + public void init() { +// repository.save(new Person("Pushkin")); + } +} diff --git a/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/domain/Email.java b/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/domain/Email.java new file mode 100644 index 00000000..c74bbb15 --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/domain/Email.java @@ -0,0 +1,20 @@ +package ru.otus.spring11.domain; + +public class Email { + + private long id; + + private String email; + + public Email(String email) { + this.email = email; + } + + public long getId() { + return id; + } + + public String getEmail() { + return email; + } +} diff --git a/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/domain/Person.java b/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/domain/Person.java new file mode 100644 index 00000000..165e92ed --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-exercise/src/main/java/ru/otus/spring11/domain/Person.java @@ -0,0 +1,34 @@ +package ru.otus.spring11.domain; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class Person { + + @Id + @GeneratedValue + private long id; + private String name; + + public Person(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/2021-05/spring-11-data-jpa/spring-11-solution/.gitignore b/2021-05/spring-11-data-jpa/spring-11-solution/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-solution/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2021-05/spring-11-data-jpa/spring-11-solution/pom.xml b/2021-05/spring-11-data-jpa/spring-11-solution/pom.xml new file mode 100644 index 00000000..6ae1df6c --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-solution/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + ru.otus + spring-11-solution + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.h2database + h2 + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/Main.java b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/Main.java new file mode 100644 index 00000000..1e82df6c --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/Main.java @@ -0,0 +1,47 @@ +package ru.otus.spring11; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import ru.otus.spring11.domain.Email; +import ru.otus.spring11.domain.Person; +import ru.otus.spring11.repository.EmailRepository; +import ru.otus.spring11.repository.PersonRepository; + +import javax.annotation.PostConstruct; + +@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection") +@SpringBootApplication +public class Main { + + public static void main(String[] args) { + SpringApplication.run(Main.class); + } + + @Autowired + private PersonRepository repository; + + @Autowired + private EmailRepository emailRepository; + + @PostConstruct + public void init() { + Email emailP = new Email("alex@pushkin.ru"); + emailRepository.save(emailP); + Email emailL = new Email("michail@lermontov.ru"); + emailRepository.save(emailL); + + repository.save(new Person("Pushkin", emailP)); + repository.save(new Person("Lermontov",emailL)); + + System.out.println("--------"); + System.out.println(repository.findByName("Pushkin")); + System.out.println("--------"); + System.out.println(emailRepository.findAll()); + System.out.println("--------"); + System.out.println(emailRepository.findByEmail("alex@pushkin.ru")); + System.out.println("--------"); + System.out.println(repository.findByEmail_Email("alex@pushkin.ru")); + System.out.println("--------"); + } +} diff --git a/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/domain/Email.java b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/domain/Email.java new file mode 100644 index 00000000..150e2f2e --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/domain/Email.java @@ -0,0 +1,38 @@ +package ru.otus.spring11.domain; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class Email { + + @Id + @GeneratedValue + private long id; + + private String email; + + public Email() { + } + + @Override + public String toString() { + return "Email{" + + "id=" + id + + ", email='" + email + '\'' + + '}'; + } + + public Email(String email) { + this.email = email; + } + + public long getId() { + return id; + } + + public String getEmail() { + return email; + } +} diff --git a/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/domain/Person.java b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/domain/Person.java new file mode 100644 index 00000000..ecc0fa3c --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/domain/Person.java @@ -0,0 +1,55 @@ +package ru.otus.spring11.domain; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.OneToOne; + +@Entity +public class Person { + + @Id + @GeneratedValue + private long id; + + private String name; + + @OneToOne(targetEntity = Email.class) + private Email email; + + public Person(String name, Email email) { + this.name = name; + this.email = email; + } + + public Person() { + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", name='" + name + '\'' + + '}'; + } + + public Person(String name) { + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/repository/EmailRepository.java b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/repository/EmailRepository.java new file mode 100644 index 00000000..9bda9328 --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/repository/EmailRepository.java @@ -0,0 +1,16 @@ +package ru.otus.spring11.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import ru.otus.spring11.domain.Email; + +import java.util.List; + +public interface EmailRepository extends JpaRepository { + + List findAll(); + + @Query("select e from Email e where e.email = :email") + Email findByEmail(@Param("email") String email); +} diff --git a/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/repository/PersonRepository.java b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/repository/PersonRepository.java new file mode 100644 index 00000000..aab1a0c5 --- /dev/null +++ b/2021-05/spring-11-data-jpa/spring-11-solution/src/main/java/ru/otus/spring11/repository/PersonRepository.java @@ -0,0 +1,15 @@ +package ru.otus.spring11.repository; + +import org.springframework.data.repository.CrudRepository; +import ru.otus.spring11.domain.Person; + +import java.util.List; + +public interface PersonRepository extends CrudRepository { + + List findAll(); + + Person findByName(String s); + + Person findByEmail_Email(String email); +}