maven project ์ƒ์„ฑ

JINOยท2023๋…„ 8์›” 26์ผ
0

YEADAM

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

๐Ÿ”ธ ์ดํด๋ฆฝ์Šค ํ™˜๊ฒฝ์„ค์ •

1. Preferences

  • General > Web Browser : Chrome ์ฒดํฌ

  • General > Workspace - Text file encoding : UTF-8 ์„ ํƒ

  • Java > Compiler - JDK Compliance[Compiler compliance level]
    : ์„ค์น˜ํ•œ JDK ๋ฒ„์ „ ์„ ํƒ (๋‚˜๋Š” 11)

  • Java > Installed JREs : Add - Standard VM - JRE home > jdk ๊ฒฝ๋กœ ์ถ”๊ฐ€ (๋‚˜๋Š” C:\Program Files\Java\jdk-11) > ์ถ”๊ฐ€ํ•œ ๊ฒฝ๋กœ ์„ ํƒํ•˜๊ณ  finish

  • Web > CSS Files, HTML Files, JSP Files : Encoding - ISO 10646/Unicode(UTF-8) ์„ ํƒ

    ์„ค์ • ์™„๋ฃŒ ํ›„ ์ ์šฉํ•˜๊ณ  ๋‹ซ๊ธฐ!!


2. mybatis ์„ค์น˜

  • help > Eclipse Marketplace : mybatis ๊ฒ€์ƒ‰ MyBatis 1.3.0 install
  • Trust Authorities ์ฐฝ๋œจ๋ฉด Select All ๋ˆ„๋ฅด๊ณ  Trust Selected ์ญ‰์ญ‰ ์ง„ํ–‰...!

3. lombok ์„ค์น˜

  • lombk ๋‹ค์šด๋กœ๋“œ : https://projectlombok.org/download
  • ๋‹ค์šด๋ฐ›์€ ๊ฒฝ๋กœ๋กœ ์ด๋™ > ํ„ฐ๋ฏธ๋„์—์„œ java -jar lombok.jar ์‹คํ–‰
  • eclipse.exe ๊ฒฝ๋กœ ์ง€์ •ํ•ด์ฃผ๊ณ  install

๐Ÿ”ธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

1. create maven project

  • File > New > Maven Project

    • Group Id(org.apache.maven.archetypes)
    • Artifact Id(maven-archetype-quickstart)
  • ๋„๋ฉ”์ธ๋ช…(ํšŒ์‚ฌ), ํ”„๋กœ์ ํŠธ๋ช…?

    ์ฐธ๊ณ  : https://byul91oh.tistory.com/304


2. pom.xml ์„ค์ •

  • JDK ๋ฒ„์ „ ๋งž์ถ”๊ธฐ
    <properties>
     	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     	<!-- jdk ๋ฒ„์ „ ์ˆ˜์ •ํ•ด์ฃผ๊ธฐ -->
     	<maven.compiler.source>11</maven.compiler.source>
     	<maven.compiler.target>11</maven.compiler.target>
    </properties>
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฃผ์ž… : maven repository ์—์„œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๊ธฐ
    <dependencies>
     	<!-- ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ฃผ์ž… -->
    </dependencies>

3. mybatis ์„ค์ •

(1) DB ์ •๋ณด๋ฅผ ๋‹ด๋Š” ํŒŒ์ผ ์ž‘์„ฑ

  • ์ด๋ถ€๋ถ„์€ ๋ฐ”๋กœ ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค XML ์„ค์ •ํŒŒ์ผ์— ์ž‘์„ฑํ•ด๋„ ์ƒ๊ด€์—†์œผ๋‚˜, ๊ด€๋ฆฌ๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ํ•˜๋Š” ์ฐจ์›์—์„œ ๋”ฐ๋กœ ์ž‘์„ฑํ•ด์ค€๋‹ค.
    <!-- ์ฃผ์˜์‚ฌํ•ญ : ๋’ค์— ๊ณต๋ฐฑ์ด ๋“ค์–ด๊ฐ€๋ฉด ์˜ค๋ฅ˜๋ฐœ์ƒ!!!! -->
    driver = oracle.jdbc.driver.OracleDriver
    url = jdbc:oracle:thin:@localhost:1521:xe
    user = DB์ ‘์† ์•„์ด๋””
    password = DB์ ‘์† ํŒจ์Šค์›Œ๋“œ

(2) ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค XML ์„ค์ •ํŒŒ์ผ ์ž‘์„ฑ (Mybatis Configuration XML)

  • ์„ค์ •์„ ์œ„ํ•œ ์ฝ”๋“œ๋Š” ์ง์ ‘ ์ž‘์„ฑํ•  ํ•„์š” ์—†์ด ์•„๋ž˜ ์‚ฌ์ดํŠธ์—์„œ ๊ฐ€์ ธ์˜ค๊ณ  ์„ธ๋ถ€์ ์ธ ์‚ฌํ•ญ๋งŒ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

    https://mybatis.org/mybatis-3/

  • DB์ข…๋ฅ˜, ์œ„์น˜, ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•ด๋‘” .properties ํŒŒ์ผ์„ ์—ฐ๊ฒฐ
    <properties resource="database.properties" />
  • mapUnderscoreToCamelCase : ์ „ํ†ต์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์นผ๋Ÿผ๋ช… ํ˜•ํƒœ์ธ A_COLUMN์„ CamelCaseํ˜•ํƒœ์˜ ์ž๋ฐ” ํ”„๋กœํผํ‹ฐ๋ช… ํ˜•ํƒœ์ธ aColumn์œผ๋กœ ์ž๋™์œผ๋กœ ๋งคํ•‘ํ•˜๋„๋ก ํ•จ (๊ธฐ๋ณธ๊ฐ’ : false)
  • jdbcTypeForNull : Oracle ์‚ฌ์šฉ์‹œ Null ํ—ˆ์šฉ์ปฌ๋Ÿผ์— null๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ ๋ถ€์ ํ•ฉํ•œ ์—ด ์œ ํ˜• ์ด๋ผ๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ ๋ฐœ์ƒ. ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ์„ค์ •
    <settings>
    	<setting name="mapUnderscoreToCamelCase" value="true"/>
    	<setting name="jdbcTypeForNull" value="NULL"/>
    </settings>
  • SQL ๋งคํ•‘ ํŒŒ์ผ์„ ์–ด๋””์„œ ์ฐพ์„์ง€ ์•Œ๋ ค์ฃผ๋Š” ์„ค์ •
    <!-- ํŒจํ‚ค์ง€๋‚ด ๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋“ฑ๋ก -->
    <mappers>
        <package name="co.yedam.hello"/>
     </mappers>

4. SqlSessionFactory ์ƒ์„ฑ

  • ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์œผ๋กœ ์ƒ์„ฑ
    (ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ์ž‘์„ฑ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋ฏ€๋กœ ์ด๋Ÿฐ์‹์œผ๋กœ ์„ค์ •์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ ์ดํ•ดํ•˜๊ธฐ..)
public class DataSource {
	private static SqlSessionFactory sqlSessionFactory;
	
	private DataSource() {}
	
	public SqlSessionFactory getInstance() {
		String resource = "mybatis-config.xml";
		
		try {
			InputStream inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory =
					new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return sqlSessionFactory;
	}
}

5-1. Service Layer

  • DB๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋†“๊ธฐ

(1) VO ๊ฐ์ฒด ์ƒ์„ฑ

  • ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ ๊ฐ์ฒด
  • DB ์ปฌ๋Ÿผ๊ณผ ์ผ์น˜ํ•˜๋Š” ์œ ํ˜•์˜ ๋ฉค๋ฒ„ํ•„๋“œ๋ฅผ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค. (ํ…Œ์ด๋ธ”๊ณผ 1:1 ๋งค์นญ)
  • VO ๊ฐ์ฒด์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ Settingํ•˜๊ณ  Mapper์— ๋„˜๊ฒจ์ค€๋‹ค.

(2) Service Interface ์ƒ์„ฑ

  • ๋ณดํ†ต CRUD ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š” ํ•จ.

5-2. Repositofy Layer

(1) Mapper ๊ฐ์ฒด ์ƒ์„ฑ

  • ํ˜„์žฌ๋Š” Service Interface์˜ ๋ฉ”์†Œ๋“œ์™€ ์™„์ „ ๋™์ผํ•จ.
  • DB์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์†Œ๋“œ ์ƒ์„ฑ, ์‹ค์ œ ์ฟผ๋ฆฌ๋ฌธ์€ ๊ตฌํ˜„์ฒด์— ์ž‘์„ฑํ•ด์ค€๋‹ค.
    ์ด๋•Œ ๊ตฌํ˜„์ฒด๋Š” xml ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.

(2) Mapper ๊ตฌํ˜„์ฒด ์ƒ์„ฑ

  • Mapper interface ๋ฅผ ๊ตฌํ˜„ : ์ฟผ๋ฆฌ๋ฌธ ์ž‘์„ฑ

5-3. Service Layer & Repositofy Layer ์—ฐ๊ฒฐ

  • ServiceImpl์—์„œ ์—ฐ๊ฒฐ
  • ์ง€๊ธˆ์€ session๊ณผ mapper class๋กœ ์—ฐ๊ฒฐ ํ•˜์ง€๋งŒ ์Šคํ”„๋ง์—์„œ๋Š” ๋‹ค๋ฅด๋‹ค
    (ํ”„๋ ˆ์ž„์›Œํฌ์— ๋”ฐ๋ผ ์—ฐ๊ฒฐ๋ฐฉ๋ฒ•์€ ๋‹ค๋ฅด๋‹ค)
	// mapper์™€ service ์—ฐ๊ฒฐ
	private SqlSession sqlSession = DataSource.getInstance().openSession(true);
	private MemberMapper map = sqlSession.getMapper(MemberMapper.class);
    // {... ๋‚˜๋จธ์ง€ ๊ตฌํ˜„ ์ฝ”๋“œ ...}
    // service interface ์™€ mapper interface์˜ ๋ฉ”์†Œ๋“œ ๋ช…์„ ๋™์ผํ•˜๊ฒŒ ํ•˜๋Š” ์ด์œ 
profile
On your Mark

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด