분류 전체보기
-
JPA 연관관계 매핑DBMS/JPA 2024. 8. 9. 22:45
JPA 연관관계 매핑 연관관계 매핑시 고려사항 3가지• 다중성• 단방향, 양방향• 연관관계의 주인 1. 다대일 [N:1] 1 - 1. 다대일 단방향• 가장 많이 사용하는 연관관계• 다대일의 반대는 일대다 1 - 2. 다대일 양방향• 외래 키가 있는 쪽이 연관관계의 주인 • 양쪽을 서로 참조하도록 개발 2. 일대다 [1:N]2 - 1. 일대다 단방향• 일대다 단방향은 일대다(1:N)에서 일(1)이 연관관계의 주인• 테이블 일대다 관계는 항상 다(N) 쪽에 외래 키가 있음• 객체와 테이블의 차이 때문에 반대편 테이블의 외래 키를 관리하 는 특이한 구조• @JoinColumn을 꼭 사용해야 함. 그렇지 않으면 조인 테이블 방식을 사용함(중간에 테이블을 하나 추가함) 단점• 엔티티가 관리하는 외래 키가 다..
-
JPA 엔티티 매핑DBMS/JPA 2024. 8. 9. 20:27
JPA 엔티티 매핑 1. 객체와 테이블 매핑 1 - 1. @Entity• @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다.• JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수• 주의 • 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) • final 클래스, enum, interface, inner 클래스 사용X • 저장할 필드에 final 사용 X 1 - 1 - 1. 속성name• JPA에서 사용할 엔티티 이름을 지정한다.• 기본값: 클래스 이름을 그대로 사용(예: Member)• 같은 클래스 이름이 없으면 가급적 기본값을 사용한다. 1 - 2. @Table엔티티와 매핑할 테이블 지정 1 - 2 - 1. 속성 name 매핑할 테이블..
-
JPA 영속성DBMS/JPA 2024. 8. 9. 19:48
JPA 영속성 1. 영속성 컨텍스트엔티티를 영구 저장하는 환경영속성 컨텍스트는 논리적인 개념이다.눈에 보이지 않는다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다. 2. 엔티티의 생명주기• 비영속 (new/transient)영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 • 영속 (managed)영속성 컨텍스트에 관리되는 상태 • 준영속 (detached)영속성 컨텍스트에 저장되었다가 분리된 상태 • 삭제 (removed)삭제된 상태 3. 영속성 컨텍스트의 이점• 1차 캐시• 동일성(identity) 보장• 트랜잭션을 지원하는 쓰기 지연 (transactional write-behind)• 변경 감지(Dirty Checking)• 지연 로딩(Lazy Loading) 3 - 1. 1차캐시Memb..
-
JPA JPA의 기초DBMS/JPA 2024. 8. 9. 19:25
JPA 기초 1. 데이터베이스 방언• 방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능 JPA는 특정 데이터베이스에 종속적이지 않다.각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다르다.• 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2• 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR()• 페이징: MySQL은 LIMIT , Oracle은 ROWNUM hibernate.dialect 속성에 값을 지정하면 자동으로 해당 DB에 알맞은 방언으로 교체해서 실행한다.• H2 : org.hibernate.dialect.H2Dialect• Oracle 10g : org.hibernate.dialect.Oracle10gDi..
-
JPA JPA(Java Persistence API)란?DBMS/JPA 2024. 8. 9. 19:11
JPA(Java Persistence API)JPA는 DB를 편리하게 이용할 수 있게 도와주는 프레임워크이다. 1. JPA의 등장 배경요즘에는 객체를 저장할 때 주로 관계형 DB를 자주 이용한다.이전에는 SQL 중심적인 개발을 해왔었는데, 이런 식으로 개발을 하니 불편한 점이 있었다. 다 비슷비슷한데 아래처럼 조금씩만 바뀐 쿼리들을 무한 반복해서 생성하고,select a.x from tselect a.x, a.y from tselect a.x, a.y, a.z from tselect a.x from t where ~~~~ 자바 객체를 SQL로 바꾸고, 나중에 다시 또 SQL을 자바 객체로 바꾸고...또한 객체와 관계형 DB의 구조가 조금씩 다른 부분들이 개발 과정에서 혼동을 주기 쉬웠다. 그러던 중, '..
-
개발 공부 일지 11차기타/개발 공부 일지 2024. 8. 6. 18:30
글을 거의 3달 만에 쓰는데,학원 수업 막바지 ~ 프로젝트 만들기 ~ 학원 끝나니 동미참 예비군에 여기저기 불려갈 곳이 많았다. 학원 과정은 모두 수료 했고, 취업 준비를 해야 하는데 취업 사이트를 보니 확실히 내 스펙이 좀 모자라다.포트폴리오를 만들어놨지만 일단 사용 가능한 기술 스택도 적고, React나 jpa는 사실 아직 익숙하지 않아서 할 수 있다고 자신있게 말하기도 뭐해서 조금 더 보충을 한 후에 취업되겠다고 기대해야겠다. 학원 수료할 때 상을 나눠주기도 했었는데, 나는 학원에서 배우는 것 외로 다른 것들도 찾아보면서 공부하고, 모르는 건 강사님한테 물어보고 하면서, 주변 사람들한테 좋은 영향을 미쳐서 같이 공부하는 분위기를 잘 만들어줬다고 해서 강사님이 선택해서 딱 1명만 받을 수 있는 공로상..
-
erd 툴 사용 후기(Quick DBD)기타 2024. 7. 15. 22:18
프로젝트 만드는 데 생각보다 시간이 많이 걸려서 오랜만에 글을 쓴다. 팀 프로젝트 기획 당시에 erd 설계를 해야 하는데,무작정 손으로 짜다가 erd 툴이라는 것이 존재한다는 조언을 들었다. 그래서 한번 사용해봤더니 역시 인간은 도구를 사용해야 한다고 느꼈다. https://www.quickdatabasediagrams.com/ QuickDatabaseDiagrams.comPretty diagrams make your documents look good and help you communicate clearly.www.quickdatabasediagrams.com위 사이트이다. 접속 후 try the app을 클릭하면, erd를 생성할 수 있는 페이지로 이동하게 된다. 좌측의 검은 배경인 곳을 클릭하고,..
-
Spring 예외 - 2, API 예외Spring 2024. 4. 25. 11:18
예외 - 2, API 예외 1. API 예외 처리 - 시작목표 API 예외 처리는 어떻게 해야할까? HTML 페이지의 경우 지금까지 설명했던 것 처럼 4xx, 5xx와 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있다. 그런데 API의 경우에는 생각할 내용이 더 많다. 오류 페이지는 단순히 고객에게 오류 화면을 보여주고 끝이지만, API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. 지금부터 API의 경우 어떻게 예외 처리를 하면 좋은지 알아보자. API도 오류 페이지에서 설명했던 것 처럼 처음으로 돌아가서 서블릿 오류 페이지 방식을 사용해보자. 1 - 1. WebServerCustomizer 다시 동작public class WebServerCust..