전체 글22 [JPA] 스프링 데이터 JPA 이야기 번외편 - 영속성 컨텍스트 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 책을 읽고 복습 차원에서 적은 글입니다. JPA 이야기 2부 다음으로 JPA의 영속성 컨텍스트의 개념에 대해서 알아보자! 영속성 컨텍스트란? 우리말로 번역하기는 어렵지만 해석하자면 '엔티티를 영구 저장하는 환경'이라는 뜻이다. 아래의 'entityManager.persist(member);'는 단순히 저장한다고 표현했지만 정확히 이야기하면 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. @Component @Transactional public class JpaRunner implements ApplicationRunner { @PersistenceContext EntityManager entityManager; @Overrid.. 2020. 10. 5. [JPA] 스프링 데이터 JPA 이야기 2부 - JPA 사용법 이 글은 백기선 님의 스프링 데이터 JPA 강의를 듣고 복습 차원에서 적은 글입니다. 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 책을 읽고 복습 차원에서 적은 글입니다. 스프링 부트를 기반으로 환경설정을 했다. JPA는 엔티티와 테이블을 매핑하고 DB 스키마를 자동으로 생성한다. ddl_auto 옵션으로 로컬에서 편하게 스키마를 만들 수 있다. applicaton.properties spring.jpa.hibernate.ddl-auto=create spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true JpaRunner.class @Component @Transactional public class JpaRunner im.. 2020. 9. 23. [Java] JUnit5 애플리케이션을 테스트하는 다양한 방법 이야기 2부 이 글은 백기선 님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 듣고 복습 차원에서 적은 글입니다. JUnit5 : 태킹과 필터링 테스트 메소드에 태그를 추가할 수 있다. 하나의 테스트 메소드에 여러 태그를 사용할 수 있다. @DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) public class StudyTest { @Test @DisplayName("스터디 만들기 - fast") @Tag("fast") void create_new_study() { System.out.println("create fast"); Study study = new Study(100); assertThat(study.getLimit())... 2020. 9. 22. [Java] 더 자바, Java 8 이야기 1부 - 함수형 인터페이스 & 람다 이 글은 백기선 님의 더 자바, Java 8 강의를 듣고 복습 차원에서 적은 글입니다. Java 8 에서는 무엇이 바뀌었을까? 현재 자바 개발자 중 약 83%가 사용 중이라고 한다. 이 글을 통해서 확실히 공부해놓으면 좋을 것 같다. 함수형 인터페이스 (Function Interface) 추상 메소드를 딱 하나만 가지고 있는 인터페이스이다. SAM(Single Abstract Method) 인터페이스라고도 불린다. @FuncationInterface 어노테이션을 가지고 있는 인터페이스이다. @FunctionalInterface public interface Foo { void doIt(); } 람다 표현식 (Lambda Expressions) 함수형 인터페이스의 인스턴스를 만드는 방법으로 사용된다. 코드.. 2020. 9. 20. [Java] 컬렉션 프레임워크(collection framework) 이야기 2부 - Set Set Collection Set의 특징으로는 List와는 다르게 중복 값을 허용하지 않는다. 또한 인덱스로 접근하지 않기 때문에 성능적으로 부족한 면이 있다. HashSet Set의 특징답게 중복값을 허용하지 않는다. 같은 요소를 추가하는 경우 false를 반환한다. (이러한 특징을 이용하면 알고리즘에서 중복 제거하기 편할 것이다.) 저장 순서를 유지하지 않으므로 저장 순서를 원한다면 LinkedHashSet을 사용해야 한다. 또한 null값을 저장할 수 있다. public class Main { public static void main(String[] args) { // Array System.out.println("==== Array ===="); String[] strings = {"a", "d.. 2020. 9. 18. [Java] 컬렉션 프레임워크(collection framework) 이야기 1부 - List 최근 알고리즘에서 또는 JPA는 자바에서 기본으로 제공하는 Collection을 지원하고 있기 때문에 한번 정리할 필요성을 느꼈다. List Collection 색인(Index)을 사용하여 특정 위치에 요소를 삽입하거나 접근할 수 있으며 중복 요소를 허용한다. ArrayList&Vector 방식의 차이만 있을 뿐 사용방법은 거의 동일하다. ArrayList Vector 비동기 방식이다. 동기방식을 사용하더라도 Collections 클래스의 synchronized로 구현한다. 동기 방식이다. 데이터의 안정화를 보장하나 성능적인 측면에서 많이 부족하다. ArrayList vs Array ArrayList Array 사이즈가 동적이다. 추가시 메모리가 재할당되어 속도가 느리다. 다차원 구현이 불가능 하다. 사.. 2020. 9. 17. [Spring] 스프링(Spring) 핵심 기술 이야기 2부 - @Autowire 이 글은 백기선 님의 스프링 프레임워크의 핵심 기술 강의를 듣고 복습 차원에서 적은 글입니다. @Autowired 필요한 의존 객체의 "타입"에 해당하는 빈을 찾아 주입한다. 다음 위치에 사용할 수 있다. @Service public class BookService { // 필더 @Autowired BookRepository bookRepository; // 생성자 (스프링 4.3 부터는 생략 가능) @Autowired public BookService () { } // Setter // @Autowired(required = false) -> 의존성 주입이 되지 않아도 어플리케이션이 구동된다. @Autowired public void setBookRepository(BookRepository bookR.. 2020. 9. 16. [JPA] 스프링 데이터 JPA 이야기 1부 이 글은 백기선 님의 스프링 데이터 JPA 강의를 듣고 복습 차원에서 적은 글입니다. 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 책을 읽고 복습 차원에서 적은 글입니다. JPA를 공부하기 전에 일단 기존의 SQL 직접 작성할 때의 문제점은 무엇일까? 반복적인 코드가 너무 많다. 게시판을 만든다고 가정했을 때 우리는 등록, 조회, 수정, 삭제를 만들어야 한다. 이러한 비슷한 작업을 지속적으로 해야 한다. SQL에 의존적인 개발을 해야 한다. 방금 위에서 만든 게시판에 칼럼 하나를 추가해야 한다면 우리는 등록, 조회, 수정, 삭제 SQL에 모두 반영을 해야 한다. SQL문법이 각 데이터베이스마다 다르다. 그래서 위의 문제점을 개선하기 위해서 관계형 데이터베이스 모델을 객체 모델 중심으로 바꾸려.. 2020. 9. 16. [Java] JUnit5 애플리케이션을 테스트하는 다양한 방법 이야기 1부 - Assertion 이 글은 백기선 님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 듣고 복습 차원에서 적은 글입니다. TDD(TEST-Driven Development) 테스트 주도 개발을 하는 곳이 많이 늘어나면서 테스트에 대한 확실한 공부가 필요하다고 생각했다. 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크 JUnit에 대해서 공부하겠다. JUnit은 자바 8 이상 가능한 JUnit5를 중심으로 공부하겠다. testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } JUnit5 = JUnit Platform.. 2020. 9. 15. 이전 1 2 3 다음