백엔드

·백엔드/JPA
궁금한 상황이 생겼다. ​ JPA 양방향 연관 관계 시, 연관 관계의 주인에서만 연관 관계 설정이 가능하다고 한다. ​ ​ 연관 관계 주인 엔티티(Member)에서 setter()로 관계 엔티티(Team)를 설정해주면 데이터베이스 테이블에선 외래키(TEAM_ID)가 입력되어, 그 외래키로 JOIN 하여 연관 관계를 매핑할 수 있다. -> "연관 관계 주인만이 DB 연관 관계와 매핑됨" ​ ​ @Entity @Getter public class Member { @Id @GeneratedValue private Long id; private String name; @ManyToOne private Team team; //연관관계설정 public void setTeam(Team team){ this.team ..
·백엔드/Java
- 글의 순서 - 동시성 처리 이슈 상황 - 자바 동시성 처리 기초 정보 및 동시성 처리 테스트 코드 작성 방안 - java.lang.Thread & java.lang.Runnable - ExecutorFramework - Thread VS ExecutorFramework - CountDownLatch - 처리방안 - 트랜잭션 격리수준 - Uncommitted Read - Committed Read - Repeatable Read - Serializable - 데이터베이스 수준에서의 처리 방안 - 락 - 비관적 락 - 락관적 락 - 어플리케이션 수준에서의 처리 방안 - 왜 어플리케이션에서 처리할 수 있어야 하는가? - syncronized ..
·백엔드/Java
안녕하세요. 린내입니다~! 저번 게시글에선 주로 인터페이스와 추상클래스에 대해 알아보았습니다. 이번 게시글은 정적 클래스에 대해서 중점적으로 알아볼까요? 사실 자바에서는 정적 클래스가 따로 존재하진 않습니다. 자바에서 이너(혹은 중첩) 클래스가 아닌 일반 클래스는 static 키워드가 허용되지 않기 때문입니다. 통상적으로 정적 멤버(정적 필드, 정적 메소드)만 갖고 있는 클래스를 정적 클래스로 지칭하고 있습니다. // static class StaticExample { 일반 클래스에 static 키워드 사용 불가 class StaticExample { // 정적 멤버만 선언 } 정적 클래스의 멤버는 클래스 초기화 시 메서드 영역(클래스 영역)에 저장되어 프로그램이 종료될 때까지 유지됩니다. 따라서 프로그..
·백엔드/Java
안녕하세요. 린내입니다~! 오늘은 추상클래스에 대해 알아보려고 합니다. 추상클래스는 그 명칭에서 느껴지듯이.. 실무에서도 상당히 추상적으로 사용되는 느낌이 강한듯한데요. 알듯 말듯한 추상클래스에 대해서 이번 기회에 제대로 정리해보겠습니다. 하지만 사실, 오늘의 주인공은 추상클래스가 아닐수도 있습니다. 이 글의 발단은 아래의 게시글에서 시작되었는데요. https://stackoverflow.com/questions/3340032/are-utility-classes-evil Are utility classes evil? I saw this question: If a "Utilities" class is evil, where do I put my generic code? And I thought, why ar..
·백엔드/JPA
안녕하세요 ~ 린내입니다! 저번 게시글에선 복합키를 사용한 엔티티의 연관관계 조회 이슈까지 알아보았습니다. 부모엔티티와 자식 엔티티를 각각 insert 하고나서, 그래프 탐색을 통해 조회를 하려고 시도했는데, select문이 나가지 않거나 심지어 select문이 나갔는데도 조회결과가 없는 상황이 발생하였습니다. 왜 그런 것일까요? 저는 이 사항을 해결하기 위해 하이버네이트 영속성 컨텍스트와 1차 캐시에 대해 좀 더 이해할 필요가 있었습니다. 영속성 컨텍스트 및 1차 캐시 1차 캐시 1차 캐시는 영속성 컨텍스트에 위치한 메모리 공간 엔티티 저장 방식 영속성 컨텍스트에 엔티티 인스턴스가 보관되기 위해선 반드시 식별자 값이 필요합니다.. 아이덴티티, 시퀀스 PK전략에 따라, insert가 플러시 되는 시점이 ..
·백엔드/JPA
안녕하세요 ~ 린내입니다.오늘은 식별관계 복합키인 DB 구조에서 JPA 사용 시 유의 사항들에 대해 알아보겠습니다. 식별관계 복합키 DB 구조는 주로 레거시 환경에서 볼 수가 있는데요.https://techblog.woowahan.com/2595/위의 프로젝트와 흡사한 경우를 맞닥뜨렸을 때에 일어날 수 있는 상황과 유의사항에 대해 정리해보겠습니다. 일단 식별관계 복합키로 부모 자식 엔티티를 만들어 보겠습니다. 위의 우아한 형제들 기술 블로그에서 언급해주셨던 것처럼저도 @IdClass를 사용하는 것이 가독성이 더 좋고 사용하기 편리하다고 생각하여식별관계 복합키의 엔티티 표현은 @EmbededId가 아닌 @IdClass를 사용하겠습니다. cf) 부모 클래스인 경우 복합키 구조에서 @GeneratedValue..
·백엔드/Spring
안녕하세요. 이번 게시글에서는 클라이언트가 요청을 보냈을 때 WAS에서 일어나는 작업에 대해 알아보도록 하겠습니다. 특히 디버거를 사용해서 직접 코드를 살펴보며 자세히 알아볼게요~! 먼저 클라이언트에 요청이 일어난 후 내부적으로 진행되는 순서를 아래와 같이 그려보았습니다.. 저번 게시글에 그렸던 그림과 약간 차이가 있죠? 저번 게시글이 틀렸었습니다.. Connector와 ThreadPool을 별도의 모듈로 표현했었는데, Connector내부에 ThreadPool이 존재하는 것이었습니다.. (이전글 수정은 나중에...) - 각 모듈의 사양을 구분하기 위해서 Connector(Coyote) 모듈은 노란색, ServletContainer(Catailna)는 파란색, Spring은 초록색으로 표현했습니다. - ..
·백엔드/Spring
1. 직접 프록시 객체 작성 - 데코레이터 패턴 - 직접 작성하므로 프록시 대상 클래스마다 클래스 구현 필요.. public class UserServiceTx implements UserService{ UserService userService; // 타겟 오브젝트 PlatformTransactionManager transactionManager; public void setTransactionManager( PlatformTransactionManager transactionManager){ this.transactionManager = transactionManager; } public void setUserService (UserService userService){ this.userService..
·백엔드/Spring
이번 게시글에선 WAS가 어떻게 실행되고, 요청을 처리하는지 알아보겠습니다. 또한, 그 과정에서 WAS에 배포된 Spring 프로젝트를 어떻게 구동시키는지도 함께 알아보시죠,, WAS가 뭐야? - Tomcat… 우리는 면접 단골 문제로 web server와 web application server의 차이점에 대해서 외운 적이 분명히 있습니다.. web server는 정적 컨텐츠를 다루고, web application server는 동적 컨텐츠를 다룬다고 말이죠.. 그 후, 실무에서 WAS를 접할 땐 종종 이런식으로 접하게 됩니다. WAS 그거 스프링 서버 아냐? 톰캣? 아~ 그 고양이 그림~? 톰캣이 스프링 아니야? 응 아냐… 톰캣과 스프링은 분명 다른데 어디까지고 톰캣이고 스프링인지, 또한 각자의 구분..
·백엔드/Java
저번 게시글에서 DB 저장 시 원하는 코드 값이 아닌 숫자값이 그대로 DB에 저장되고 있는 이슈를 확인해보았습니다.이번엔 Enum을 활용하여 개발자의 의도대로 데이터를 insert하는 방법을 알아보겠습니다.  1. 의도대로 Insert 되지 않고 있는 필드들.. - @Id, @Enumerated   @Entity@Table(name = "post")@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)@IdClass(PostId.class)public class Post { @Id @Enumerated(EnumType.STRING) // 왜 적용 조차 안되지.. @Column(name = "category_code") private ..
꾸준함의 미더덕
'백엔드' 카테고리의 글 목록 (2 Page)