86일 차 - 마이바티스 활용 (23.05.02)

yvonne·2023년 5월 2일
0

📂Spring

목록 보기
18/18
post-thumbnail

📝 MyBatis

✔ root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- Root Context: defines shared resources visible to all other web components -->
	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName"
			value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="jdbcUrl"
			value="jdbc:oracle:thin:@localhost:1521/xe"></property>
		<property name="username" value="scott"></property>
		<property name="password" value="tiger"></property>
	</bean>

	<!-- HikariCP configuration -->
	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
		destroy-method="close">
		<constructor-arg ref="hikariConfig" />
	</bean>

	<!-- 1.번 방법을 위하여 mapperLocations 을 추가 함 -->
	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="mapperLocations"
			value="classpath:/mappers/**/*.xml" />
	</bean>

	<!-- 1번 방식 사용을 위한 sqlSession -->
	<bean id="sqlSession"
		class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg index="0" ref="sqlSessionFactory" />
	</bean>

</beans>

📍 스프링에서의 커넥션 풀

자바에서는 기본적으로 DataSource 인터페이스를 사용하여 커넥션풀을 관리한다.

Spring에서는 사용자가 직접 커넥션을 관리할 필요없이 자동화된 기법들을 제공하는데
SpringBoot 2.0 이전에는 tomcat-jdbc를 사용,
현재 2.0이후 부터는 HikariCP를 기본옵션으로 채택




📌 주입 애너테이션

@Autowired
@Inject
@Resource

📍 @Resource

  • Java에서 지원하는 어노테이션
  • 특정 프레임 워크에 종속적이지 않다.

찾는 순서

  이름 -> 타입 -> @Qualifier -> 실패
  • name 속성의 이름을 기준으로 찾음

  • 없으면 타입, 없으면 @Qualifier 어노테이션의 유무를 찾아 그 어노테이션이 붙은 속성에 의존성을 주입

  • <context:annotation-config/>
    구문을 꼭 xml 설정파일에 추가해야한다.

✔ 사용할 수 있는 위치

  • 멤버변수 , setter 메소드

📍 @Autowired

  • Spring에서 지원하는 어노테이션

✔ 찾는 순서

타입 -> 이름 -> @Qualifier -> 실패
  • @Autowired는 주입하려고 하는 객체의 타입이 일치하는지를 찾고 객체를 자동으로 주입

  • 만약에 타입이 존재하지 않는다면 @Autowired에 위치한 속성명이 일치하는 bean을 컨테이너에서 찾는다.

  • 이름이 없을 경우 @Qualifier 어노테이션의 유무를 찾아 그 어노테이션이 붙은 속성에 의존성을 주입

  • <context:annotation-config/>
    구문을 꼭 xml 설정파일에 추가해야한다.

✔ 사용할 수 있는 위치

  • 멤버변수, setter메소드, 생성자, 일반 메소드에 -적용가능

📍 @Inject

  • Java에서 지원하는 어노테이션
  • 특정 프레임 워크에 종속적이지 않다.

✔ 찾는 순서

타입 -> @Qualifier-> 이름 -> 실패
  • @Aurowired와 동일하게 작동하지만 찾는 순서가 다르다.

  • @Inject를 사용하기 위해서는 maven이나 gradle에 javax 라이브러리 의존성을 추가해야한다.
    import javax.inject.Inject;

✔ 사용할 수 있는 위치

  • 멤버변수, setter 메소드, 생성자, 일반 메소드에 적용 가능



📝 마이바티스 4가지 방식

📂 1. SqlSession 을 활용한 두 가지 방식

  • 1) GetMapper 함수 활용해서 interface 클래스 활용하는 방식
  • 2) interface없이 SqlSession 객체에서 제공하는 CRUD 함수에서 다이렉트로 xml 연결하는 방식

📂 3. Annotation을 활용하는 방식

📂 4. Mapper 정의해서 사용하는 방식

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=syc0821&logNo=221436412469
https://jung-story.tistory.com/128
profile
개발 연습장

0개의 댓글