본문 바로가기

최종프로젝트

MyBatis

728x90
반응형

Bean 등록 Annotation

 

@Component

 컴포넌트를 나타내는 일반적인 스테리오 타입으로 <bean> 태그와 동일한 역할을 함

@Repository

 퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스

@Service

 서비스 레이어, 비지니스 로직을 가진 클래스

@Controller

 프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스

 - @Repository, @Service, @Controller는 더 특정한 유즈케이승 대한 @Component의 구체화된 형태이다.

 

 

Bean 의존관계 주입 Annotation

 

@Autowired, @Resource annotation은 의존하는 객체를 자동으로 주입해주는 annotation이다.

@Autowired

 정밀한 의존관계 주입이 필요한 경우에 유용.

 @Autowired는 프로퍼티, setter 메서드, 생성자, 일반 메서드에 적용 가능.

 의존하는 객체를 주입할 때 주로 Type을 이용

 @Autowired는 <property>, <contructor-arg> 태그와 동일한 역할.

@Resource

 어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용

 @Resource는 poperty, setter 메서드에 적용 가능

 의존하는 객체를 주입할 때 주로 Name을 이용

@Value

 단순한 값을 주입할 때 사용되는 annotation.

 @Value("Spring")은 <property .. value="Spring" />와 동일한 역할

@Qualifier

 @Qualifier는 @Autowired annotation과 같이 사용.

 @Autowired는 타입으로 찾아서 주입하므로, 동일 타입의 Bean 객체가 여러 개 존재할 때 특정 Bean을 찾기 

 위해 사용



출처: https://smallgiant.tistory.com/11 [나에게 남기는 지식]

 

Annotation을 이용한 Bean 등록

Bean 등록 Annotation @Component  컴포넌트를 나타내는 일반적인 스테리오 타입으로 태그와 동일한 역할을 함 @Repository  퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스

smallgiant.tistory.com

 

xml파일에서 resultMap 쓰는 이유 

    실제 컬럼명과 bean의 변수명이 일치하지 않을때 맵핑하기 위해 씀.

 

resultType 과 resultMap 차이점

resultType 

 - ibatis 에서 resultClass → mybatis 에서 resultType 으로 바뀜

 - 클래스명 전체 또는 alias를 입력

   즉 매핑하려는 자바 클래스의 전체 경로를 입력함

 - 예 : com.test.Student 객체로 쿼리 실행 결과값을 받고자 할 때

        <select id="selectTest" resultType="com.test.Student">

   ...

  </select>

 - 예 : int 형 객체로 쿼리 실행 결과값을 받을 때

        <select id="selectTest" resultType="int">

   ...

  </select>

 

resultMap

 - resultMap 선언 당시 참조로 사용한 이름을 입력

 - resultType을 이용하면 자동 매핑되기 때문에 편리하지만 제한이 있으나,

   resultMap을 사용하면 개발자가 직접 원하는 POJO 클래스에 매핑 가능

 - 예 : 

        <resultMap id="test" type="com.test.Student">

            <result property="name" column="name">

             ....

  </resultMap>

 

  <select id="selectTest" resultMap="test">

   ...

  </select>

 

728x90
반응형

'최종프로젝트' 카테고리의 다른 글

댓글 수정 문제  (0) 2020.09.18