Dev

Dev/JPA

[강의정리] 연관관계 매핑

출처: 자바 ORM 표준 JPA 프로그래밍 객체와 테이블을 매핑하기위해서 페러다임의 불일치를 해결해야 한다. 객체의 참조와, 테이블의 외래 키를 매핑해야 하는것이다. JPA의 @JoinColumn를 사용하면 이를 쉽게 해결할수있다. 용어 정리, 설명 • 방향(Direction): 단방향, 양방향 -객체는 참조의 방향이 있다. A 객체가 B 객체를 참조하면 단방향 매핑이 하나 있는것이며, B 객체가 A 객체를 참조하면 단방향 매핑이 두개 있는것이고, 이를 양방향 매핑이라 부른다. 양방향 매핑을 하면, 1. 연관관계의 주인을 설정해주어야 한다. 2. 연관관계 편의 매소드를 작성해야 한다. 양방향 매핑은 나중에 필요하면 추가하는 식으로 작성하는것이 바람직하다. • 다중성(Multiplicity): 다대일(N:..

Dev/JPA

[강의정리] 엔티티 매핑

출처: 자바 ORM 표준 JPA 프로그래밍 ㅇ 자주 쓸것같은것만 아주 간단하게 정리해보겠다. • 객체와 테이블 매핑: @Entity, @Table • 필드와 컬럼 매핑: @Column @Enumerated @Temporal @Lob @Transient • 기본 키 매핑: @Id @Entity 테이블과 매핑할 클래스에 사용. JPA 관리하에 두게함. 기본 생성자 필수. @Table (name = blabla)통해 테이블 이름 설정가능 @Column (name = blabla)통해 칼럼 이름 설정가능 insertable 옵션도 있음 @Enumerated EnumType.STRING으로 해야 나중에 대참사 예방가능 @Temporal :LocalDate, LocalDateTime 쓰면 안해도 괜찮음 @Lob 지..

Dev/JPA

[강의정리] 영속성 컨텍스트의 동작

출처: 자바 ORM 표준 JPA 프로그래밍 PersistenceContext: 영속성 컨텍스트 영속화의 의미는 데이터를(엔티티) 영구 저장하는 것. 그것에 사용되는 논리적인 환경이 영속성 컨텍스트이다. EntityManager를 통해 접근할수 있다. 세부적으로는 EntityManagerFactory에서 EntityManager를 만들고, 그걸 트랜잭션 단위로 클라이언트가 사용한다. 생명주기 • 비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 • 영속 (managed) 영속성 컨텍스트에 관리되는 상태 • 준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태 • 삭제 (removed) 삭제된 상태 영속성 컨텍스트의 이점 1차캐시 - 영속성 컨텍스트에 포함되..

Dev/JPA

[강의정리] SQL 중심적인 개발의 문제점

출처: 자바 ORM 표준 JPA 프로그래밍 주된 이유: 패러다임의 불일치 . . . ===객체지향 언어와 관계형 데이터베이스의 차이에서 오는 어려움=== -객체를 테이블에 맞추어 모델링 해야함: 객체는 상속관계, 테이블은 슈퍼타입 서브타입 관계, 객체는 참조 사용, 테이블은 외래키 사용 -진정한 의미의 계층분할이 어려움: DAO 작성자와 service 작성자가 다를때, 서비스에서 DAO를 맘놓고 못쓴다. 쿼리가 실제로 어떻게 나가는지 일단 확인해야하기 때문이다. -객체를 자바 컬렉션처럼 디비에 저장하고 사용하고싶음: 그래야 다형성, 객체 그래프 탐색 등이 쉬움 종합하면, 프로그래머는 객체지향 프로그래밍의 장점을 살려서 프로그래밍 하고싶다. 그러나 패러다임의 불일치로 인해서 급한 불을 끄는 식으로 sql ..

Dev/개발일지

자바 ORM 표준 JPA 프로그래밍 완강

김영한님의 JPA 인강을 드디어 다 들었다. 17시간 짜리 강의이고, 강의 내용도 쉽지않아서 힘들었다. 사실 난이도 자체가 너무 어렵고 이해가 죽어도 안된다는 느낌은 아니였고, 강의에서 안다고 전제하고 설명하는 것들, 초반부에 알려주고 제대로 복습이 안된것들에 대해서 슉슉 지나가는 느낌이여서 힘들었다. DB설계와 SQL에 관한 내용들이 특히 알쏭달쏭했다. 하지만 이 강의를 듣기 잘했다고 생각하는게, 이렇게 내가 뭘 모르는지 아는 상태가 되는것이 너무너무 필요했기 때문이다. 이제부터 강의를 쭉 복습해서 블로그에 정리하고, 남은 강의들을 빨리 듣고나서 토이 프로젝트를 얼른 해보고싶다.

Dev/개발일지

학교에서 진행하는 프로젝트들

갑자기 요즘 내가 뭘 하고 사는지 기록하고 싶어졌다. 참 바쁜 날들을 보내고있다. 4월에 중간고사 기간이였는데, 오히려 그걸 핑계로 시험공부만 깔짝깔짝 하느라 다른 공부에 좀 소홀했다. 시험은 그 덕분에? 만족할만하게 봤지만...ㅋㅋ 이제 스프링 강의도 빠르게 듣고 알고리즘... 그놈의 알고리즘도 복습 해야 하는데... 아 이거 참 정이 안간다... 어쨌든. 난 요즘 학교에서 하는 팀플만 4개이다. 곧 하나 더 늘어날 예정이고..ㅋㅋ 모바일프로그래밍, 소프트웨어공학, 소프트웨어 산업 세미나, 졸업작품 이렇게 4개를 현재 진행중이다. 소산세는 레포트 쓰는거고 나머지는 전부 프로젝트이다. 각각 주제는, 소공은 1인 여행자 혼밥족을 위한 서비스 모프는 내일의쿡 이라는 ㅋㅋ 만개의 레시피 비슷한 서비스 졸작은 ..

Dev/Spring

9. 빈 스코프

강의내용 빈 스코프란? -> 빈이존재할 수 있는 범위이다. 우리가 알고있던 빈 존재 범위는 사실 싱글콘 빈의 범위이다. 그게 기본값이니까. 하지만 스프링은 다양한 스코프를 지원한다. 1. 프로토타입 2. 웹관련 -request, session, application 스코프 등등이 존재한다. 프로토타입 스코프 매우 짧은 스코프이다. 스프링 컨테이너는 프로토타입 빈을 생성하고, 의존관계 주입, 초기화까지만 처리한다 -> 그러므로 @PreDestory는 동작하지 않는다. 그리고 싱글톤이 아니니까 이렇게 클라이언트는 서로 다른 빈을 받게된다. 이런 특성을 지닌 프로토타입 빈을 싱글톤과 같이 쓴다면 어떻게 될까? 프로토타입 빈이 호출됐지만, 결국 클라이언트 빈 호출시 한번만 호출되므로, 기대한 결과가 안나오게 된..

Dev/Spring

8. 빈 생명주기 콜백

강의 복습 스프링에서 DB 연결 같이 초기화랑 종료 작업이 필요한 일을 어떻게 해야할까? 초기화 콜백, 소멸전 콜백 이 두개를 사용하면 된다. 그전에 알아야 할 사실...! 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성 스프링 빈 생성 의존관계 주입 초기화 콜백 사용 소멸전 콜백 스프링 종료 이 순서로 이루어진다. 다시 돌아와서, 다양한 방식으로 이런 생명주기 콜백을 지원한다. 1. 인터페이스(InitializingBean, DisposableBean) 2. 설정 정보에 초기화 메서드, 종료 메서드 지정 3. @PostConstruct, @PreDestory 애노테이션 지원 이 중에서 @PostConstruct, @PreDestory 애노테이션을 사용하자 이유? -> 최신 스프링에서 가장 권장하는..

ChoiBulldog
'Dev' 카테고리의 글 목록 (4 Page)