본문 바로가기

분류 전체보기270

[Spring] @Transactional - 1 전파 레벨(propagation) @Transactional 사용시 주의사항 @Transactional을 클래스 또는 메소드 레벨에 명시하면 해당 메소드 호출시 지정된 트랜잭션이 작동하게 된다. 단, 해당 클래스의 Bean을 다른 클래스의 Bean에서 호출할 때만 @Transactional을 인지하고 작동하게된다. Propagation.REQUIRED @Transactional(propagation = Propagation.REQUIRED) public void doSomething() { ... } default 값이기 때문에 생략가능 부모 트랜잭션 내에서 실행하며, 부모 트랜잭션이 없을 경우 새로운 트랜잭션 생성 해당 메소드를 호출한 곳에서 별도의 트랜잭션이 설정되어 있지 않다면 트랜잭션을 새로 시작한다.(새로운 연결을 생성하고 실행.. 2020. 7. 6.
[Java] Equals와 HashCode Equals와 HashCode에 대해 좀 더 자세히 공부 할 필요성을 느껴서 정리한다. Equals 두 객체의 동등성(내용)을 비교한다. HashCode 두 객체의 동일성(같은 객체)을 비교한다. public class Human { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String[] args) { Human h1.. 2020. 7. 4.
[Java] Primitive Type VS Reference Type 자바에서 타입은 크게 기본형 타입과 참조형 타입이 있다. 기본형 타입(Primitive Type) 기본 자료형은 반드시 사용하기 전에 선언되어야 한다. 비객체 타입이기 때문에 null값을 가질 수 없다. 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용해야한다. 실제 값을 저장하는 공간으로 스택(Stack) 메모리에 저장된다. 컴파일 시점에 데이터의 표현 범위를 벗어나면 컴파일 에러가 발생한다. boolean, byte, short, int, long, float, double, char 참조형 타입(Reference Type) 기본형 타입을 제외한 타입들이 모두 참조형 타입이다. 기본적으로 java.lang.Object를 상속받으면 참조형이 된다. 빈 객체를 의미하는 Null이 존재한다. 값이 .. 2020. 7. 1.
[Spring] 스프링 AOP with (프록시 패턴) 인프런 백기선님의 예제로 배우는 스프링 입문 (개정판) 강좌를 참고해 정리한 글 입니다. 내가 알기로 AOP는 공통 로직을 줄이기 위해 사용한다고 알고있다. 어떻게?? 찾아보자. AOP란? 어플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원 핵심적인 기능에서 부가적인 기능을 분리하여 Aspect라는 모듈로 만들어 설계하고 개발하는 방법이다. 각각의 클래스를 부가기능의 관점에서 바라보았을 때 공통된 요소를 추출하는것(로깅, 트랜잭션, 보안) 가로 영역의 공통된 부분을 잘라냈다고 하여, AOP를 크로스 컷팅(Cross-Cutting)이라고 부르기도 한다. 장점 어플리케이션 전체에 흩어진 공통 기능이 하나의 장소에서 관리된다. 다른 서비스 모듈이 본인의 목적에만 충실하고 그외 사항은 신경쓰지 않아도 된.. 2020. 6. 30.
[JPA] spring data jpa Page vs Slice 페이지와 슬라이스는 무슨 차이점이 있을까?? Page findByLastname(String lastname, Pageable pageable); Slice findByLastname(String lastname, Pageable pageable); List findByLastname(String lastname, Sort sort); List findByLastname(String lastname, Pageable pageable); Pageable 객체를 쿼리 메소드로 전달해 쿼리에 페이징을 동적으로 추가할 수 있다. page는 사용 가능한 데이터의 총 개수 및 전체 페이지 수를 알 수 있다. 총 개수를 알아내기 위해 추가적으로 카운트 쿼리가 실행된다. 기본적으로 카운트 쿼리는 실제로 실행되는 쿼리에.. 2020. 6. 29.
[Java] 자바 8은 왜 쓸까? 나는 단순하게 람다식을 사용 할 수 있어서? 라고 밖에 생각이 들지 않는다. 그래서 갑자기 궁금해졌다..! 자바 1.8을 검색했을 때 가장 많이 나오는 단어가 함수형 프로그래밍 이었다. 함수형 프로그래밍?? 자바를 주로하는 나에게 객체지향 프로그래밍도아닌 함수형 프로그래밍은 낯선 단어이다. 객체지향 프로그래밍 vs 함수형 프로그래밍 객체지향은 명령형프로그래밍이고, 함수형은 선언형 프로그래밍이다. 두 프로그래밍 방식의 가장 큰 차이점은 문제해결의 관점이다. 객체지향 : 데이터를 어떻게 처리할 지에 대해 명령을 통해 풀어 나간다. 함수형 : 선언적 함수를 통해 무엇을 풀어나갈지 결정한다. 흠.. 아직 그래도 어렵다. 함수형 프로그래밍 대입문이 없어 변수에 값이 할당되면 그 이후 절대 변하지않는다. = sid.. 2020. 6. 17.