Spring Data JPA Many To Many 양방향 관계 예제

Similar documents
@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

내장서버로사용. spring-boot-starter-data-jpa : Spring Data JPA 사용을위한설정 spring-boot-devtools : 개발자도구를제공, 이도구는응용프로그램개발모드에서유 용한데코드가변경된경우서버를자동으로다시시작하는일들을한다. spri

5장.key

rmi_박준용_final.PDF

비긴쿡-자바 00앞부속

PowerPoint Presentation

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

JAVA PROGRAMMING 실습 08.다형성

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

PowerPoint 프레젠테이션

10.ppt

PowerPoint Presentation

09-interface.key

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint Presentation

신림프로그래머_클린코드.key

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밊

<session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.oracledriver</property> <property name="hibernate.connection.u

JAVA PROGRAMMING 실습 05. 객체의 활용

Chap12

Microsoft PowerPoint - 14주차 강의자료

05-class.key

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

어댑터뷰

과정명

중간고사

PowerPoint Presentation

자바 프로그래밍

쉽게 풀어쓴 C 프로그래밍

JMF3_심빈구.PDF

Design Issues

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

ch09

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

제11장 프로세스와 쓰레드

07 자바의 다양한 클래스.key

Microsoft PowerPoint - 2강

12-file.key

gnu-lee-oop-kor-lec10-1-chap10

JAVA PROGRAMMING 실습 02. 표준 입출력

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Microsoft PowerPoint - Java7.pptx

No Slide Title

FileMaker ODBC and JDBC Guide

PowerPoint Presentation


Microsoft PowerPoint - lec12 [호환 모드]

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

자바GUI실전프로그래밍2_장대원.PDF

PowerPoint Presentation

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

untitled

[ 스프링부트, 그래들, HelloWorld]STS,Gradle 설치및 WEB MVC 심플예제 간단히 STS 및 Gradle Support Plugin 을설치하여간단히 Spring Boot, Gradle Web 응용프로그램을작성해보자. 0. STS 및 Gradle Su

Interstage5 SOAP서비스 설정 가이드

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

Web Application을 구성하는 패턴과 Spring ROO의 사례

FileMaker ODBC and JDBC Guide

교육2 ? 그림

02 C h a p t e r Java

제8장 자바 GUI 프로그래밍 II

JAVA PROGRAMMING 실습 07. 상속

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

JavaGeneralProgramming.PDF

강의 개요

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

Network Programming

교육자료

PowerPoint Presentation

int total = 0; for( int i=1; i<=5; i++ ) { for( int j=1; j<=i; i++ ) { total ++; System.out.println( total ); 대구분 : 객체와 Class 소구분 : 객체생성과사용 / Class 선언

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

Cluster management software

JAVA PROGRAMMING 실습 05. 객체의 활용

OOP 소개

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

gnu-lee-oop-kor-lec11-1-chap15

01-OOPConcepts(2).PDF

슬라이드 1

mytalk

untitled

1

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

JAVA Bean & Session - Cookie

Transcription:

Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com)

엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1 : 다, 다 : 1 로나누어서풀게된다. 그러나객체에서는 2 개의객체로다 : 다관계를만드는데, 사원에서취미를컬렉션에넣어접근가능하고, 반대로취미에서도사원들을컬렉션에넣어접근하면양쪽에서접근이가능하다. 다 : 다매핑을위해 @ManyToMany 어노테이션을사용한다. SAWO N # id name # id name HOBB Y # sawon_id # hobby_id SAWON_HOBBY 2

엔티티매핑 (Entity Mapping) M : N 양방향연관관계 @ManyToMany 어노테이션에 mapsby 속성을사용하여연관관계의주인을지정한다. (mappedby 가없는곳이 Owner 이다 ) SAWO N # id name # id name HOBB Y # sawon_id # hobby_id SAWON_HOBBY Sawon Id : Long name : String hobbies : Hobby +sawons +hobbies * * Hobby id : Long name : String sawons : Sawon 3

엔티티매핑 (Entity Mapping) M : N, 양방향예제 (1) src/main/resources/application.properties STS -> Spring Stater Project name : manytomany Data : JPA DataBase : MySQL spring.datasource.platform=mysql spring.datasource.url=jdbc:mysql://localhost/manyto many?createdatabaseifnotexist=true spring.datasource.username=root spring.datasource.password=1111 spring.datasource.driver-classname=com.mysql.jdbc.driver spring.datasource.sql-script-encoding=utf-8 spring.jpa.hibernate.ddl-auto=create spring.jpa.show-sql=true 4

엔티티매핑 (Entity Mapping) M : N, 양방향예제 (2) demo.model.sawon.java @Entity public class Sawon { private Long id; private String name; private Set<Hobby> hobbies; public Sawon(String name, Set<Hobby> hobbies) { this.name = name; this.hobbies = hobbies; public Sawon(Long id, String name, Set<Hobby> hobbies) { super(); this.id = id; this.name = name; this.hobbies = hobbies; public Sawon() { @Id @GeneratedValue public Long getid() { return id; public void setid(long id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "sawon_hobby", joincolumns = @JoinColumn(name = "sawon_id", referencedcolumnname = "id"), inversejoincolumns = @JoinColumn(name = "hobby_id", referencedcolumnname = "id") ) public Set<Hobby> gethobbies() { return hobbies; public void sethobbies(set<hobby> hobbies) { this.hobbies = hobbies; public String tostring() { String result = String.format("Sawon [id=%d, name='%s']%n", id, name); if (hobbies!= null) { for (Hobby hobby : hobbies) { result += String.format("Hobby[id=%d, name='%s']%n", hobby.getid(), hobby.getname()); return result; 5

엔티티매핑 (Entity Mapping) M : N, 양방향예제 (3) demo.model.hobby.java @Entity public class Hobby { private Long id; private String name; private Set<Sawon> sawons; public Hobby() { public Hobby(String name) { this.name = name; public Hobby(Long id, String name) { this.id = id; this.name = name; public Hobby(Long id, String name, Set<Sawon> sawons) { this.id = id; this.name = name; this.sawons = sawons; @Id @GeneratedValue public Long getid() { return id; public void setid(long id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; @ManyToMany(mappedBy = "hobbies") public Set<Sawon> getsawons() { return sawons; public void setsawons(set<sawon> sawons) { this.sawons = sawons; demo.repository.sawonrepository.ja va package demo.repository; import org.springframework.data.jpa.repository.jpa Repository; import demo.model.sawon; public interface SawonRepository extends JpaRepository<Sawon, Long>{ 6

엔티티매핑 (Entity Mapping) M : N, 양방향예제 (4) demo.manytomanyapplication.java @SpringBootApplication public class ManytomanyApplication implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(ManytomanyApplica tion.class); public static void main(string[] args) { SpringApplication.run(ManytomanyApplicatio n.class, args); @Autowired SawonRepository sawonrepository; sawonrepository.save(new HashSet<Sawon>() { { add(new Sawon("1 길동 ", new HashSet<Hobby>() { { add(h1); add(h2); )); add(new Sawon("2 길동 ", new HashSet<Hobby>() { { add(h2); add(h3); )); add(new Sawon("3 길동 ", new HashSet<Hobby>() { { add(h1); add(h3); )); ); @Transactional public void run(string...args) { Hobby h1 = new Hobby(" 등산 "); Hobby h2 = new Hobby(" 골프 "); Hobby h3 = new Hobby(" 여행 "); for(sawon s : sawonrepository.findall()) { logger.info(s.tostring()); 7

엔티티매핑 (Entity Mapping) M : N, 양방향예제 (5) 데이터확인하기 [ 테이블셍성스크립트 ] Hibernate: create table hobby (id bigint not null auto_increment, name varchar(255), primary key (id)) Hibernate: create table sawon (id bigint not null auto_increment, name varchar(255), primary key (id)) Hibernate: create table sawon_hobby (sawon_id bigint not null, hobby_id bigint not null, primary key (sawon_id, hobby_id)) Hibernate: alter table sawon_hobby add constraint FK_p9uwrr1nddt9pgue7xqmey4cr foreign key (hobby_id) references hobby (id) Hibernate: alter table sawon_hobby add constraint FK_qqk3c8ippcim47nrhxyislbtl foreign key (sawon_id) references sawon (id) 8