전체 글
[Spring] BeanFactory와 ApplicationContext
BeanFactory - 스프링 컨테이너의 최상위 인터페이스이다. - 스프링 빈을 관리하고 조회하는 역할을 담당한다. - getBean()을 제공한다. - 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. Applicationcontext - BeanFactory기능을 모두 상속받아서 제공한다. - 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데, 그러면 둘의 차이는 애플리케이션을 개발할 때는 빈을 관리하고 조회하는 기능은 물론이고, 수 많은 부가기능이 필요하다. Applicationcontext가 제공하는 부가기능 MessageSource를 활용한 국제화 기능 - 예를 들어서 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력한다. 환경변수 ..
[Spring] 스프링 컨테이너와 빈
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); - ApplicationContext를 스프링 컨테이너라 하며 인터페이스이다. - 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다. - 자바 설정 클래스를 기반으로 스프링 컨테이너를 만들면 new AnnotationConfigApplicationContext(AppConfig.class); 이 클래스는 ApplicationContext인터페이스의 구현체이다. Ps. 스프링 컨테이너를 부를 때 BeanFactory, ApplicationContext로 구분해서 이야기한다. Bean..
프로젝트 회고 [티러버TLOVER]
프로젝트 회고 [티러버TLOVER] 구분: 앱 런칭 프로젝트 구성: Backend 6명, Android 4명 맡은 역할: Backend-Architect 이번 앱런칭 프로젝트는 22-1 명지대학교 팀프로젝트1에서 진행하였다. 이번에는 온전하게 코드의 전반적인 구성과 깊이를 탐구하기 위해 Architect를 지원하였다. 역할이 Architect인 만큼 코드의 전체적인 구성, 패키지 구조, 클래스의 상속과 관련해서 깊은 고민을 했다. 1. Exception 클래스 구성 처음에 Exception은 단순히 메시지로만 구성된 Exception을 터트렸는데 이는 협업에서 큰 오류를 범할 수 있다고 생각했고 실제로 같은 Architect를 맡은 팀원에게 의견을 물어 관련 코드 구성을 찾아보고 가장 나은 방안을 몰색하..
[JPA]연관관계 매핑(다대일, 일대다, 일대일, 다대다)
다양한 연관관계 매핑 다대일[N:1] 일대다[1:N] 일대일[1:1] 다대다[N:M] 연관관계 매핑시 고려사항 3가지 다중성 단방향, 양방향 연관관계의 주인 다중성 다대일: @ManyToOne 일대다: @OneToMany 일대일: @OneToOne 다대다: @ManyToMany 단방향, 양방향 테이블 외래 키 하나로 양쪽 조인 가능하다. 사실 방향이라는 개념이 존재하지 않는다. 객체 참조용 필드가 있는 쪽으로만 참조 가능 한 쪽만 참조하면 단뱡향 양쪽이 서로 참조하면 양방향 연관관계의 주인 테이블은 외래키 하나로 두 테이블이 연관관계를 맺는다. 객체 양방향 관계는 A->B, B->A 처럼 참조가 2 곳이 존재 객체 양방향 관계는 참조가 2 곳이 있다. 둘중 테이블의 외래 키를 관리할 곳을 지정해야한다. ..
[JPA] 기본 키 매핑
@Id @GeneratedValue 기본 키 매핑 방법 직접 할당: @Id만 사용 자동 생성(@GeneratedValue) IDENTITY: 데이터베이스에 위임, Mysql SEQUENCE: 데이터베이스 시퀀스 오브젝트 사용, ORACLE @SequenceGenerator 필요 TABLE: 키 생성용 테이블 사용, 모든 DB에서 사용 @TableGenerator 필요 AUTO: 방언에 따라 자동 지정, 기본값 IDENTITY 전략 - 특징 기본 키 생성을 데이터베이스에 위임한다. 주로 Mysql, PostgreSQL, SQL Server, DB2에서 사용(예: MySQL의 AUTO_ INCREMENT) JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행한다. AUTO_INCREMENT는 데이터베..