반응형 annotation10 @Transient 어노테이션 JPA를 사용할 경우 Entity 를 사용하게 되는데 여기 내에 값들은 entity 와 매칭되는 테이블의 컬럼 하나하나로 이어진다. 그렇다는건 entity 클래스 내에는 테이블의 컬럼값들만 정의를 해야하는데, 만약 dto처럼 사용이 되는 entity의 경우 는 테이블 컬럼들 이외에 추가로 다른 변수들도 사용해야할수도 있다. 이럴 경우 @Transient 어노테이션을 사용한다. 예를들어 Member Entity 가 아래와 같이 있다. @Entity public class Member{ private String id; private String pw; private String pwconfirm; pwconfirm 항목은 비밀번호를 한번더 입력해주세요에 사용되는 컬럼이라서 비지니스로직에서 pw==pwcon.. 2023. 10. 2. custom annotation 활용 요즘 자바에선, 스프링에선 annotation에 대해서 많이 사용이 되고 없이는 개발이 많이 불편한 시대가 되어버렸다. 이전 포스팅에서 annotation에 대해서 많이 다뤘으니 참고를 하는것도 도움이 될것이다. 이번 포스팅에서는 aop를 사용할때 필자가 사용했던 custom annotation을 설명하려고 한다. aop 에 대한 내용 역시 아래 참고 포스팅을 참고하길 바란다.(pointcut에 annotation 설정하는 경우) annotation은 일단 interface 로 작동을 하게 된다. interface로 선언을 하니 당연한 내용이다. 그리고 annotation을 만들 interface를 만들어준다. @Retention(RetentionPolicy.RUNTIME) @Target(value = .. 2023. 6. 2. @Controller와 @RestController 결론 먼저 말하면 둘의 차이는 HTTP Response Body가 생성 유무로 나뉜다. 즉 RestController 는 Controller + Response Body 이다. @Controller 전통적인 Spring MVC의 컨트롤러 View 를 사용 @ResponseBody를 사용할 경우 View 대신 Controller에서 직접 데이터 리턴 가능 @RestController RESTFUL 웹서비스에서 컨트롤러 반환 객체 데이터 타입 : JSON/XML 타입의 HTTP 응답을 직접 리턴 실행 흐름 @Controller Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet.. 2022. 11. 7. @builder annotation jpa를 사용중에 entity를 사용하게 되면 일반적인 DTO 와는 다르게 annotation을 주의해서 써야한다. 대표적으로 setter 가 있긴하지만 그 밖에도 builder 부분에서 주의를 해줘야한다. 서비스 단에서 builder를 사용하지 않고 만약 Member member = new Member(); 라고 member를 생성하게 된다면 구문적으로는 틀린 부분이 없지만 persistence 부분에서는 빈값이 되어버려서 에러가 발생한다. 그럴경우에 생성자를 사용할때 new 가 아니라 build를 사용해줘야한다. 사용법은 아래와 같다. 만약 entity 가 int id; String name; 두개만 있다는 가정 하에 Member member = Member.builder().id(1).name("n.. 2022. 10. 26. Error creating bean with name 'entityManagerFactory' 프로젝트 실행시 제목과 같은 Error creating bean with name 'entityManagerFactory' 라는 에러가 나면서 실행이 되지 않았다. 사용중인 데이터프레임워크는 JPA였고 해결법은 오랜만에 Entity를 설정하다보니 @Id를 설정하지 않고 repository 에서 extends를 한것이 문제였다. 결론은 @Id 어노테이션을 entity 에 설정해줌으로써 해결. 다른 어노테이션들은 아래 참고 포스팅을 보면 도움이 될것이다. 참고 포스팅 https://thenicesj.tistory.com/274 JPA에서의 어노테이션 JPA에서나 Springdata JDBC에 사용되는 어노테이션에 관해서 다뤄볼 것이다. 엔티티 관련 @Entity 당 어노테이션을 붙이게 되면 해당 클레스가 데.. 2022. 10. 22. @Valid annotation (BindingResult, Error)(유효성 검사) 지난번에 다뤘던 포스팅 중에서 not null관련 포스팅도 존재하고, jackson 관련 포스팅도 존재한다. 둘의 공통점은 dto 등에서 변수에 설정을 걸어주는것이다. 하지만 이 둘 말고도 또다른 annotation이 존재하는데 그것들에 대해서 잠깐 소개 하고 valid annotation으로 한번에 유효성 검증을 하는 법에 대해서 소개해보려고 포스팅을 작성한다. 위에 두가지 경우에 대해서는 아래 참고 포스팅을 참고해보길 바란다. 오늘 사용할 annotation 관련은 import javax.validation.constraints.*; 임포트를 따른다. Anotation 제약조건 @Size(min=,max=) 문자열, 배열등의 크기가 만족하는가? @Pattern(regex=) 정규식을 만족하는가? @M.. 2022. 8. 22. JPA에서의 어노테이션 JPA에서나 Springdata JDBC에 사용되는 어노테이션에 관해서 다뤄볼 것이다. 엔티티 관련 @Entity 당 어노테이션을 붙이게 되면 해당 클레스가 데이터베이스의 테이블과 1대1 매칭이 됨. @Table(name="zzz") 해당하는 테이블과 매핑됨. @Column(aa 해당 맴버변수와 테이블의 Column와 맵핑됨 @Id 해당 어노테이션이 붙은 맴버변수는 해당 테이블의 Primary key가 된다. 객체를 식별할 유일값임. @GeneratedValue(stargety=?) AUTO(default):JPA 구현체가 자동으로 생성 전략을 결정한다. IDENTITY : 기본키 생성을 데이터베이스에 위임한다. 예를 들어 MySQL의 경우 AUTOINCREMENT를 사용하여 기본키를 생성한다. SEQU.. 2022. 7. 22. Spring Bean 이란? 스프링에는 다양한 특징이 있지만 그중 하나는 제어의 역전 IoC 이다. 제어의 역전에 관한 내용은 아래 참고 포스팅을 참조하면 이해하기 쉬울 것이다. 스프링 컨테이너에서 직접 객체를 관리 하게 되는데 이것을 빈(Bean)이라고 한다. 빈 등록은 다양한 방법이 있는데 @Component 애노테이션이 있으면 스프링 빈으로 자동 등록된다. 또한, @Component를 포함하는 @Controller, @Service, @Repository 애노테이션도 스프링 빈으로 자동 등록된다. 스프링에서는 다음과 같은 순서로 동작을 한다. 컨트롤러에서 @Controller 어노테이션을 사용하게 되면 자동으로 스프링 빈에 등록이 되고, controller 클래스에서는 서비스 호출을 위해 @Autowired 라는 어노테이션으로.. 2022. 7. 17. Annotation 소개 및 설명 다른 프로그래밍 언어에도 사용은 되지만 java의 spring/ springboot에서 특히 효율적으로 사용이 되는 Annotation에 대해 알아볼것이다. 영어사전을 찾아보면 뜻은 '주석' 이라는 뜻을 가진 단어인 annotation은 말그대로 코드에 도움을 주는 주석을 달아두는 것이다. 사용법은 클래스나 변수 위에 @ 를 붙인 후에 사용을 하게 되는데, 필자 경우는 자바에서는 javax.annotation이나 lombok을 이용한 어노테이션을 많이 붙인다. (물론 다른것들도 많다.) 이 밖에도 많은 어노테이션들이 있음. 이런 식의 어노테이션이 있다는것을 위해 사진을 첨부 하였다. 다양한 장점들이 있는데, 개인적인 생각으로는 변수 설정 부분에서는 유효성 검사시 변수에 Notnull이나 Length 등의.. 2022. 1. 16. 이전 1 2 다음 반응형