-----------------------------------------------------------pom.xml----------------------------------------------------------------------
pom.xml이란?
라이브러리 기능들을 코드를 통해 다운받아준다고 생각하면 좋다
spring framework를 사용하다보면 maven , pom.xml파일 등을 자주 보고 듣게된다.
프로젝트를 진행할때 사용하는 라이브러리들이 많아질 수록 관리하는게 어려워지는데
이때 메이븐이 필요하다.
즉 메이븐은 네트워크를 통해서 라이브러리들을 자동으로 받아주고 또 내가 사용하는 라이브러리들과 그 라이브러리들이 작동하는데 필요한 다른 라이브러리들까지 관리해준다.
그럼 그 라이브러리들을 메이븐이 어떻게 다운받아주고 관리해주는가?
바로 pom.xml파일에 필요한 기능들을 작성해주면 된다.
(pom.xml에 필요한 기능을 메이븐형식 코드를복사해서 명시해두면 자동으로 그 기능을 다운받아준다)
pom.xml파일 위치
pom.xml파일은 프로젝트 오픈하면 바로 맨아래에 위치해있습니다.
만약 파일 찾는데 잘 안보일경우
* 파일검색 단축키 ctrl + shift + R 사용해서 검색하시면 됩니다 .
<<기본으로 다운받는 기능들>>
ojdbc(jdbc를 사용하려면 ojdbc필요 -- ojdbc버전은 pc에 설치된 jdk버전과 관련이 있음)
mybatis
mybatis -spring
spring-jdbc (jdbc-java database connectivity --> DB에 접근할 수 있도록 자바에서 제공하는 API)
mysql
spring test(junit이랑 spring 연결해주는거)
+ 본인이 추가로 넣고싶은 기능
*** 아래 코드 뜻은 가장 최신버전으로 받는다는말
${org.springframework-version}
-------------------------------------------------------------------------------------------------------------------------------------------------------------
pom.xml작성방법
< mybatis로 검색 예시 >
1. 구글에 메이븐저장소를 검색
2. 메이븐저장소에서 필요한 기능검색후 클릭해서 들어가기
3. 가장위가 최신버전임 클릭해서 들어가기
4. maven, gradle 등 툴이 많은데
거기에서 자신이 사용하는 툴의 코드를 복사해서 붙여넣기하면 됨
그런데 우리는 지금 spring framework를 사용하는데 스프링은 Maven Build가 필요함
그래서 Maven코드로 복사해서 붙여넣기하면됨
그리고 기능을 검색했는데 기능종류가 많거나해서 어떤걸 넣어야할지 모를때는
구글 검색해서 사람들이 많이 넣는 버전의 기능을 넣어주면 됨
***junit이랑 spring 연결해주는건 spring test로 찾기
아래는 추가한 기능들
-----------------------------------------------------------------------------------------------------------------------------------------------------------
pom.xml 기본기능 다운 코드
<!-- junit이랑 spring이랑 연결해주는 기능 https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
<scope>test</scope>
</dependency>
<!-- 추가기능 -->
<!-- oracle https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.7.0.0</version>
</dependency>
<!-- Mybtis https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.10</version>
</dependency>
<!-- Mybatis - Spring https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!-- Spring jdbc https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.22</version>
</dependency>
<!-- my sql https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
-------------------------------------------------------root-context.xml----------------------------------------------------------------
root-context.xml이란?
Bean객체들을 관리하는 문서인데 여기에 등록된 빈들은 모든 컨텍스트에서 사용할 수 있음
다운받은 라이브러리를 사용하는 곳
->필요할때 객체를 사용하기위해 이 문서에 bean태그를 이용해 bean을 등록하고 주입하는 방식으로 사용
+ DB연결할때 사용해서 DB관련 정보 입력하기
Bean이란?
스프링이 직접 관리하는 자바객체 (스프링 IoC가 관리하는 객체가 bean)
그동안은 사용자가 class 생성, new를 사용해서 객체를 직접 만들어서 사용했는데
스프링에서는 사용자가 직접 객체를 생성해서 사용하지 않고 스프링에 의해 관리당하는 자바객체를 사용함
즉 스프링에의해서 직접 생성되고 관리되는 자바객체임
이 객체를 bean이라고 한다.
왜 스프링에서는 객체를 직접관리하는가?
제어의 역전(IoC)라는게 있는데 이건 객체의 생성 및 제어권을 사용자가 아닌 스프링에게 맡기는 것이다.
이건 스프링 특징인데
스프링 특징에는 제어의 역전IoC라는게 있음
제어의 역전(IoC)이란 객체의 생성 및 제어권을 사용자가 아닌 스프링에게 맡기는것
그래서 IoC가 적용된경우는 객체생성과 제어권을 스프링에게 넘김
스프링에는 IoC가 적용되어 있어서
스프링 사용시에는 사용자가 new로 객체를 생성, 사용하지않고 스프링에 의하여 관리당하는 자바 객체를 사용함
root-context.xml 작성법 (위치: src>main>webapp>WEB-INF>spring>
--->
아래는 root-context.xml 파일에 원래 작성되어있는 코드들이고
하단에 namespace 클릭해서 들어가면
pom에서 작성한 기능들이 다운받아져있을거임
(만약 다운이 안되어있는경우는 ojdbc나 spring-jdbc 없는경우 다운이 안됨)
위에서 클릭한것들이 아래 빨간박스에 추가된것임
그리고 root-context.xml파일에
DB연결정보관련 bean을 입력해줘야함
root-context.xml 파일 DB연결관련 코드작성 <beans> </beans> 태그 안에 하단의 코드 넣어주기
--------------------------------------------------------------------------------------------------------------------------------------------------------
<!-- DB Connection -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="dsme" />
<property name="password" value="dsme" />
</bean>
<!-- MyBatis Connection -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/mybatis-config.xml"></property> <!-- mybatis-config.xml 파일 만들어주기 (자동생성되지 않음) -->
<property name="mapperLocations" value="classpath:/mappers/**/*.xml"></property> <!--resources에 mappers 폴더 만들어주기 -->
</bean>
<!-- 3. SqlSessionTeplate DB연결&종료-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
--------------------------------------------------------------------------------------------------------------------------------------------------------------
코드설명
-------------------------------------------------------------------------------------------------------------------------------------------------------------
<!-- DB Connection -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
<property name="username" value="dsme" /> --->DB아이디 -자기꺼에 맞게 수정
<property name="password" value="dsme" /> --->DB비밀번호 - 자기꺼에 맞게 수정
</bean>
-------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------
<!-- MyBatis Connection -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
--> mybatis-config.xml 파일은 자동생성되지 않기때문에 만들어주기
어디에? src>main>resources에 만들어주기
--> XML파일 생성하는방법
src>main>resources에서 마우스우측버튼 new > others> xml파일 >파일 이름 넣어주고 finish
그리고 mybatis-config.xml 파일내부가 비어있으면 안되는데
<?xml version="1.0" encoding="UTF-8"?> 이 코드 아래에
하단코드를 넣어줘야 에러가안남
---------------------------------------------------------------------
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>
---------------------------------------------------------------------
이 코드를 넣는 이유는
-------------------------------------------------------------------------------------------------------------------------------------------------------------
<property name="mapperLocations" value="classpath:/mappers/**/*.xml"></property>
--> src>main>resources에 mappers 폴더 만들어주기
</bean>
여기에서 / 뜻은 resources 폴더(src>main>resources를 뜻함
왜? servlet-context.xml 파일에서 <resources mapping="/resources/**" location="/resources/" />
로 location을 resources로 잡아놨기 때문임
* servlet-context.xml은 init-param을 통해 spring MVC설정을 위한 xml파일 위치를 알려줌*
---------------------------------------------경로의미 -------------------------------------------
/mappers/**/*.xml 의미
/ mappers / ** / * . xml
resources폴더 mappers파일 어느폴더 어느xml파일 찾는경로
(src>main>resources)
그렇다면 아래 경로의 의미는?
/*mappers/*.xml
/ *mappers / *.xml
resources폴더 어느mappers파일 어느xml파일 찾는경로
(src>main>resources)
-----------------------------------------------------------------------------------------------------------
즉 자기가 원하는 경로를 만들어주면 되는데 /mappers/**/*.xml 이 경로를 추천함 (파일이 많아지는 경우를 대비해서)
-------------------------------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------
<!-- 3. SqlSessionTeplate DB연결&종료-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
-------------------------------------------------------------------------------------------------------------------------------------------------------------
생성한 파일, 폴더 및 기존 파일들 위치 확인해보기
파랑박스 = 상위폴더
빨강박스 = 생성한 폴더나 파일
--------------------------------------------------mybatis-config.xml----------------------------------------------------------------
mybatis-config.xml 이란?
mybatis에서 사용될 DB를 연동하기 위한 설정값들과 mapper.xml을 등록하기 위한 xml이다.
그렇다면 MyBatis란?
CRUD를 편하게 하기위해 xml로 구조화해서 mapper설정 파일을 통해 JDBC를 구현한 영속성 프레임워크
**CRUD
Create - 생성 = insert문
Read - 읽기,조회 = select문
Update - 수정 = update문
Delete - 삭제 =delete문
sql문을 수정하려면 sql문이 자바 안에 있어서 자바 소스에서 String으로 연결된 SQL문을 수정하고 컴파일 후 사용할 수 있는데 마이바티스는 이 sql을 분리해서 외부파일로 저장해 두고 특별한 이름으로 가져다 쓰는것임
매핑 시켜둔것임
Test 파일로 확인하기
작성한 후에 테스트파일을 통해서 연결이 잘 되는지 확인해야함
아래 파일들 사용
파일위치
src> test> java> 자신이 만든 경로
예. src>test>java>com>ntsys>bbs
에러난 부분들 수정해줘야함
자신의 경로로 넣어주기 나같은 경우는
package com.ntsys.bbs;
다른파일들도 수정해주고
MybatisTest.java파일의 경우 오류가 또났는데
Resource specification not allowed here for source level below 1.7 오류부분은
아래 글에서 확인해주기
https://yummiyummy.tistory.com/67
Test파일 및 junit 관련해서는 아래 글 참고하기
https://yummiyummy.tistory.com/69
-------------------------위 기본 셋팅과 참고파일들을 완료하시면 일단 기본 셋팅은 완료되었습니다. ----------------------------------
'development♥ > [Java Spring]게시판 만들기' 카테고리의 다른 글
sqlSessionFactory 에러 오류 해결방법 [Spring Junit Test] (0) | 2022.09.30 |
---|---|
Element 'dependency' cannot contain text content. The content type is defined as element-only. Code: 오류 (0) | 2022.09.26 |
[스프링 프레임워크 게시판 만들기 ]1. 기본 설치 및 프로젝트 만들기 (0) | 2022.09.25 |
아파치톰캣 다운로드 Apache Tomcat 설치 (0) | 2022.09.24 |
이클립스 설치 및 스프링 프레임워크 다운로드 eclipse , spring framework (0) | 2022.09.23 |