반응형

Spring 51

태태개발일지 - JPA PK Key

JPA KEY 생성 전략 1. AUTO (기본값)JPA가 사용하는 데이터베이스 방언에 따라 키 생성 방식을 자동으로 선택합니다.주로 SEQUENCE(PostgreSQL, Oracle) 또는 IDENTITY(MySQL, MariaDB)를 사용.@Id@GeneratedValue(strategy = GenerationType.AUTO)private Long id;2. IDENTITY데이터베이스가 자동으로 ID를 생성합니다.매번 insert가 즉시 실행되며 쓰기 지연이나 batch insert는 불가능.@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id; 3. SEQUENCE데이터베이스의 시퀀스 객체를 사용하여 ID를 생성합니다.JPA가 ..

Spring/JPA 2024.12.03

태태개발일지 - Spring(토비님)

Containerless  Containerless 지향적이란? 서블릿컨테이너와 관련된 번거롭고 복잡한 작업들, 그에대한 지식들을 상관하지않고, bean을 관리하는 것에만 초점을 맞춘 것이다.ex) xml, 서블릿 컨테이너 설치 @SpringBootApplication 없이? 동작하는 방법은? public static void main(String[] args){ new Tomcat().start();}-> 이렇게 사용하기에는 너무 복잡하다. public static void main(String[] args){ new TomcatServletWebServerFactory server = new TomcatServletWebServerFactory(); WebServer webServer = ..

Spring 2024.12.01

태태개발일지 - Spring 시작 (토비님) 기본 복귀하기

Spring 시작하기 @RestControllerpublic class HelloController{ @GetMapping("/hello") public String hello(String name){ return "Hello " + name; }} Test:localhost:8080/hello?name=Spring 으로 테스트가 가능하다. 테스팅 방법1. 웹 브라우저 개발자 도구2. curl3. HTTPie4. Postman5. JUnit Teset6. Another 웹어플리케이션의 흐름 1. web client가 web request를 web container가 componet를 찾아서 다시 return한다. *client와 container 사이에는 request와 resp..

Spring 2024.11.26

태태개발일지 - 스프링부트 이해와 원리(토비님)

스프링부트란?스프링을 기반으로 실무 환경에 사용 가능한 수준의 독립실행형 애플리케이션을 복잡한 고민 없이 빠르게 작성할 수 있게 도와주는 여러가지 도구의 모임이다. 스프링은 옛날꺼다? 그래서 우리는 안쓴다?? --> 이것은 틀린말이다.스프링 != 스프링 부트스프링 부트는 그저 스프링을 잘 그리고 빠르게 사용할 수 있게 해주는 도구이다.#스프링기반, #실무환경, #독립실행형애플리케이션 #도구  1. 매우 빠르고 광범위한 영역의 스프링 개발 경험 제공2. 강한 주장을 가지고 즉시 적용 가능한 기술 조합을 제공하면서, 필요에 따라 원하는 방식으로 손쉽게 변형3. 프로젝트에서 필요로 하는 다양한 비기능적인 기술제공(내장형 서버, 메트릭, 보안)4. 코드생성이나 XML 설정을 필요로 하지 않음 요악: Spring..

Spring 2024.11.25

태태개발일지 - 양방향 연관관계

양방향 연관관계 앞서 OneToMany , ManyToOne, OneToOne, ManyToMany 관계를 알아보았다. 양방향 연관관계는 ManyToMany를 말하는 것이 아니다. OneToMany 와 ManyToOne 으로 서로 연관관계를 맺었을 때에 대한 이야기이다. -- sudo code --public class One{ private Long id; @ManyToOne @JoinColumn(name = "TWO") private Two two;} -- sudo code --public class Two{ private Long id; @OneToMany(mappedby= "two") private List ones;}  아래와 같이 서로 양방향으로 연관..

Spring/JPA 2024.11.22

태태개발일지 - JPA 슈퍼타입

슈퍼타입 서브타입 논리모델 객체는 상속을 지원하므로 모델링과 구현이 똑같지만, DB는 상속을 지원하지 않아서, 논리 모델을 물리 모델로 구현할 방법이 필요. DB의 슈퍼타입 서브타입 논리모델을 실제 물리 모델로 구현하는 방법은1. join2. singleTable3. tablePerClass 들어가야하는 어너테이션 종류 JPA가 이 세가지 방식과 매핑하려면@Inheritance(strategy=InheritanceType.XXX).default 전략은 SINGLE_TABLEInheritanceType 종류JOINEDSINGLE_TABLETABLE_PER_CLASS@DiscriminatorColumn(name="DTYPE")부모 클래스에 선언한다. 하위 클래스를 구분하는 용도의 컬럼이다. 관례는 defau..

Spring/JPA 2024.11.20

태태개발일지 - ActionQueue

ActionQueue 커리어리에서 개발 관련 글을 읽다가 JPA가 flush 할 때 개발자가 의도한 비지니스 로직 대로, 실행되지 않는다는 글을 읽게 되었다. 그래서 실제로 간단한 Entity하나를 만들어서 테스트해봤다.테스트 한 내용은 이렇게된다. 예상 로직 : insert -> select -> insert -> delete -> insert실제로직 : insert -> insert -> insert  -> delete 하지만 test하니까 정말로 중복키 에러가 뜨는 것이였다. 그래서 ActionQueue에 대해서 찾아봤다. ActionQueue의 주요 역할엔티티 상태 추적:JPA에서는 엔티티 객체를 관리하는데, ActionQueue는 엔티티 객체가 변경될 때마다 그 변경 사항을 추적합니다. 예를 들..

Spring/JPA 2024.11.18

태태개발일지 - ManyToMany

ManyToMany * 실무에서 ManyToMany 관계를 사용하는 경우는 거의없다. * => 아래 이유를 설명하겠다. 일단 N:N관계에 ManyToMany 어너테이션을 사용하게된다.사실 상 DB에서 N:N 관계에 정규화된 테이블에 연관을 맺게되려면, 무조건 가운데 테이블을 하나 생성하고 만들게된다.ex) 그렇다면 JPA 에서 ManyToMany는 무엇인가?ManyToMany를 선언하게 된다면, 그냥 저 가운데 테이블이 메핑이 되는 것이다. ex)public member{ @Id private Long id; @ManyToMany @JoinColumn(name = "MEMBER_ID") private List teams; } public Team{ @Id ..

Spring/JPA 2024.11.15

태태개발일지 - OneToOne

OneToOne DB에서 1대 1관계라고 생각하면 된다. *JPA에서는 OneToOne 어너테이션을 사용하면 되고, 외래키가 있는 곳을 연관관계의 주인으로 설정하면 된다.*public class Member(){ @Id private Long id; @OneToMany @JoinColumn(name = "STAM_ID") private STAMP stamp;}  public class Stamp(){ @Id private Long id; @OneToMany(mappedBy="stamp") private Member member;}  OneToOne 은 엔티티를 가져올때 LAZY로 처리해도 무조건 즉시 로딩이된다.그 이유는 값이 있는 지 확..

Spring/JPA 2024.11.15

태태개발일지 - JPA 연관관계

OneToMany JPA강의를 듣다 보니 ManyToOne을 반대쪽으로 설정하면 OneToMany다라고 생각했는데 One인 곳이 연관관계의 주인이 되는 OneToMany가 있다는 것을 인지한 후 글로 정리한다. @Entitypublic class Member{ @ID private Long id } @Entitypublic class Team{ @Id private Long id; } 다음과 같이 엔티티를 보았을 때 Member와 Team은 N:1 관계이다.DB에는 Member에 Team의 외래키가 들어있는 상황. Member를 연관관계의 주인으로 보았을 땐 Member에 JoinColum을 두고 관계를 맺으면 깔끔하다.근데 Member에서는 Team에 대한 데이터를 다루고 싶지 않을 때 우..

Spring/JPA 2024.11.14
반응형