개발 28

[Spring Security] Spring Security 의 동작과정과 구현

본 글은 Spring Boot 3 & Spring Framework 6 마스터하기! (https://www.udemy.com/course/spring-boot-and-spring-framework-korean/) 를 보고 정리한 글입니다.글또 x Udemy 이벤트로 수강하게 된 강의인데, 좋은 기회를 얻게 되어 감사드리는 마음입니다!컴퓨터에 강한 나라 인도 출신 강사님이 설명해주시는 spring framework 강의로, Hibernate, React, Docker AWS 등 spring framework 뿐 아니라 이를 활용해서 하나의 어플리케이션을 만들기 위한 전반적인 과정을 담고 있습니다.가장 좋은 점은 정말 핵심 이론만 쏙쏙 골라서 설명한 후 , 코드를 작성하는 방식이라는 점입니다.군더더기 없이 ..

개발/java 2024.04.14

[Spring - JPA] 4. 엔티티 매핑

목차 객체와 테이블 매핑 : @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관 관계 매핑 : @ManyToOne, @JoinColumn 1. 객체와 테이블 매핑 1. @Entity 이 어노테이션이 붙으면 JPA가 관리한다. 이 어노테이션 사용 시 주의점 기본 생성자 필수 (public or protected 생성자) 다양한 기술을 사용하기 위해서 필요 final 클래스, enum, interface, inner 클래스에는 사용 불가 저장할 필드에 final 사용 x @Entity 속성 name : JPA에서 사용할 엔티티 이름 지정 (기본값으로는 클래스 이름 그대로)2. @Table 엔티티와 매핑할 테이블 지정 속성 : name, catalog, schema,..

개발/java 2024.03.16

Spring 에서 configuration 을 다루는 방법 - @Value vs @ConfigurationProperties

사이드 프로젝트를 하면서 동료 개발자분께서 Components/KakaoKey 의 존재 이유를 여쭤보셨다. application.properties 의 값을 @Value 어노테이션을 이용해 가져와 저장하는 목적의 클래스들이었다. 단순히 환경 설정을 위한 값을 저장하는 빈, 컴포넌트로는 사용하기 애매할 수 있다는 생각이 들었고, @ConfigurationProperties라는 어노테이션에 대해 알게 되어 이번 기회에 정리해보게 되었다. Externalized Configuration 서로 다른 환경에서 애플리케이션이 돌아갈 수 있게 하는 방법 중 하나는 externalized configuration 이다. 여러가지 외부 설정을 java properies 파일, yaml 파일, 환경 변수, command-..

개발/java 2024.02.26

[Spring - JPA] 3. 영속성관리

JPA 에서 가장 중요한 2가지 객체와 관계형 데이터 베이스를 어떻게 매핑하나 영속성 컨텍스트 (JPA 가 내부적으로 어떻게 동작하나) 1. 영속성 컨텍스트란? 'Entity를 영구 저장하는 환경’이라는 뜻 EntityManager.persist(entity); EntityManager를 통해 영속성 컨텍스트에 접근. 2. Entity 의 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태 영속(managed) : 영속성 컨텍스트에 관리되는 상태 ((em.persist(member))) 준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태 (em.detach(member)) 삭제 (removed) : 삭제된 상태 *영속상태가 되었다고 해서 바로..

개발/java 2024.02.18

[Spring - JPA] 2. JPA 개요

JPA 설정하기 위치가 정해져 있음. Dialect ? 데이터베이스들은 각각 SQL 문법과 함수가 조금씩 다르다. 예를 들어 Mysql은 VARCHAR, Oracle은 VARCHAR2 페이징 : Mysql은 LIMIT, Oracle은 ROWNUM 방언 -> SQL 표준을 지키지 않는 특정 데이터베이스 만의 고유한 기능. JPA 구동 방식 설정정보를 보고 나서, entity manager factory를 만든다. persistenceUnitName (pom.xml 에서 설정된 게 있음) 인자를 넣어서 createEntityManagerFactory 궁금한 점 : 트랜잭션마다 entity manager 를 새롭게 만들어야 하는 이유가 뭐지? create table Member( id bigint not nu..

개발/java 2024.02.18

[Spring - JPA] 1. JPA 소개

*본 글은 JPA 에 대해 공부(책, 강의) 하고 쓴 글입니다. 내용 요약 JPA 란, 객체와 관계형 데이터 베이스 간을 연결해주는 인터페이스로, 객체의 필드에 대해 관계형 데이터베이스에 저장, 삭제, 수정, 조회를 SQL 작성없이 용이하게 할 수 있도록 하는 JAVA API 이다. (Java Persistence API) - JPA는 entityManager를 통해 객체를 관리한다. - JPA는 JPQL 을 사용하여 객체를 기반으로한 쿼리를 작성할 수 있다. - JPA 는 내부적으로 database 와 통신하기 위해 JDBC 를 사용한다. JPA 를 사용함으로써 직접 SQL을 작성해 객체를 저장해야하는 시절의 어려움 (객체들마다 다르게 작성, 상속관계, 연관관계의 객체들은 별도의 맵핑, 객체간의 비교 ..

개발/java 2024.02.03

[Spring - DB] 1. JDBC 이해

본 글은 Spring Database 관리에 관한 강의를 수강한 후 작성한 정리입니다. JDBC, Java Database Connectivity를 통해 다양한 Database 들을 사용함에도 불구하고 일관된 접근을 할 수 있게 되었다는 점이 인상적입니다. 1. JDBC 이해 Java Database Connectivity 클라이언트, 즉 브라우저는 보통 애플리케이션에 특정 작업이나 리소스를 요청하고, 애플리케이션 서버가 데이터베이스에 접근한다. 애플리케이션 서버가 데이터베이스를 사용하기 위해서 진행하는 절차 1. 커넥션 연결 : 주로 TCP/IP 사용 2. SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 커넥션을 통해 DB 로 전달 3. 결과 응답 예전에는 데이터베이스마다 위의 방법..

개발/java 2024.01.07

[Spring 기본] 6. 의존관계 자동 주입

생성자 수정자 (setter) 필드 주입 메소드 주입 생성자 주입 사용하기 추천 final 키워드와 함께 사용 생성자 주입을 사용하면 필드에 final 키워드를 사용할 수 있다. 그래서 생성자에서 혹시라도 값이 설정되지 않는 오류를 컴파일 시점에 막아준다. 롬복 라이브러리 사용하기 getter, setter 어노테이션 제공 @RequiredArgsConstructor 롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다. (코드에는 보이지 않지만 실제 호출 가능하다.) 최근에는 생성자를 딱 1개 두고, @Autowired 를 생략하는 방법을 주로 사용한다. 여기에 Lombok 라이브러리의@RequiredArgs..

개발/java 2024.01.06

[Spring 기본] 5. 컴포넌트 스캔

컴포넌트 스캔과 의존관계 자동 주입 컴포넌트 스캔 Configuration 클래스에 @ComponentScan 어노테이션을 붙인다. 스프링 빈으로 등록할 객체들을 @Component 어노테이션을 붙인다. 그러면 컨테이너에 빈으로 등록이 된다. 이전에는 직접 new MemberServiceImpl(memberRepository()) 같은 식으로 의존관계가 주입이 가능했는데, 지금은 불가능해졌다. 자동의존관계 주입 클래스의 생성자에 @Autowired 어노테이션을 붙이면 스프링 빈 중 해당 파라미터 타입에 해당하는 빈이 자동으로 의존관계 주입이 된다. applicationContext.getBean(MemberRepository.class) 의 결과를 주입한다고 보면 된다. 타입이 여러 개인 경우는 추후 설..

개발/java 2024.01.06

[Spring 기본] 4. 싱글톤 컨테이너

4. 싱글톤 컨테이너 1. java는 웹 애플리케이션 서비스 용 언어 요청이 있을 때마다 새로 new 를 해서 객체를 반환하는 문제 클라이언트가 요청할 때 매번 객체가 새로 생긴다 요청을 수행하기 위해 스레드가 하나 생기고, 독립적인 인스턴스가 생기기 때문에 그런 것이다. 2. 싱글톤 패턴 싱글톤 패턴을 이용하여, 하나의 객체를 가지고 요청을 처리하도록 할 수 있다. 생성자 private 화, 그리고 static 멤버 변수로 미리 생성해둔 후 getInstance() 로 반환. 3. 싱글톤 패턴의 문제점 싱글톤 패턴을 구현하는데 코드를 많이 필요로 한다. 의존관계상 클라이언트가 구현체에 의존하게 된다. DIP 위반 따라서 OCP 도 위반하게 된다. 유연한 테스트를 하기 어렵다. 내부 속성을 변경하거나 초..

개발/java 2024.01.06
728x90
728x90