-
JAVA ์๋ฐ ๋ง์ด๋ฐํฐ์ค mybatis ์ฌ์ฉํ๊ธฐJAVA 2020. 8. 21. 23:59
๐ฏ ์๋ฐ ๋ง์ด๋ฐํฐ์ค๋ฅผ ์ฌ์ฉํด์ JDBC ํ๋ก๊ทธ๋๋ฐ์ ์ฐ์ตํด๋ณธ๋ค.
๋ง์ด๋ฐํฐ์ค (MyBatis)
๋ง์ด๋ฐํฐ์ค๋ ํผ์์คํด์ค ํ๋ ์์ํฌ(Persistence Framework)์ด๋ค. ์ด ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ฉด JDBC ํ๋ก๊ทธ๋๋ฐ์ ์ข ๋ ๊ฐ๋จํ๊ฒ ์์ ํ ์ ์๋ค.
๋ง์ด๋ฐํฐ์ค ์ฐ์ตํด๋ณด๊ธฐ
0. Test ํด๋์ค์ main ํจ์ ์คํ ์
0-1. ์ค๋ผํด ๋๋ผ์ด๋ฒ jarํ์ผ๊ณผ mybatis ๋๋ผ์ด๋ฒ jarํ์ผ์ ๋น๋ํจ์ค์ ์ถ๊ฐํ๋ค.
0-2. com.config ํจํค์ง์ MySqlSessionFactory ํด๋์ค
#MySqlSessionFactory public class MySqlSessionFactory { static SqlSessionFactory sqlSessionFactory = null; static {// ์ด๊ธฐํ // jdbc.propertiesํ์ผ ์ฌ์ฉ String resource = "Configuration.xml"; InputStream inputStream = null; try { inputStream = Resources.getResourceAsStream(resource); System.out.println("์ด๊ธฐํ ์ฑ๊ณต"); } catch (IOException e) { e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }// end static // SqlSession ๋ฐํ public static SqlSession getSqlSession() { SqlSession session = sqlSessionFactory.openSession(); return session; } }
JDBC ์ปค๋ฅ์ ์ ๋ด๋นํ๋ ํฌํ๋ฆฟ ํด๋์ค์ ์ญํ ์ MySqlSessionFactory ํด๋์ค๊ฐ ๋ด๋นํ๋ค. ์ด ํด๋์ค๋ ์ ์ผ ๋จผ์ static ๋ธ๋ญ์ ์ฝ์ด์ค๋ฉด์ ์ด๋ค ํ์ผ์ ์ ์ฅํ ๊ฒ์ธ์ง ํ์ธํ๋ค. resuorce ๋ณ์์ ๋ด๊ธด 'Configuration.xml'ํ์ผ์ jdbc์ฐ๊ฒฐ์ ํ์ํ 4๊ฐ์ง ์ ๋ณด๋ฅผ ๋ด๋๋ค.
#MySqlSessionFactory InputStream inputStream=null; try { inputStream = Resources.getResourceAsStream(resource); } catch (IOException e) { e.printStackTrace(); } sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
์ด ๋ถ๋ถ์ ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์์ผํ๊ธฐ ๋๋ฌธ์ ์ธํ์คํธ๋ฆผ์ ์ฌ์ฉํ ๊ฒ์ด๋ค. ์ต์ข ์ ์ผ๋ก ์ปค๋ฅ์ ์ ์ป์ด๊ฐ๋ ํด๋์ค๊ฐ ๋๋ค.
#MySqlSessionFactory //SqlSession ๋ฐํํด์ฃผ๋ ๋ฉ์๋ // MySqlSessionFactory.getSession()์ผ๋ก ํธ์ถ ์ฌ์ฉ public static SqlSession getSession() { SqlSession session = sqlSessionFactory.openSession(); //์ค์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ connection๊ณผ ๋น์ทํ ๊ฐ์ฒด return session; }
getSession์ ํตํด์ db์ ์ ์ํ๊ณ ์ฌ์ฉํ๋ค. SqlSession์ด JDBC์ Connection์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
0-3. XML์์ SqlSessionFactory ๋น๋ํ๊ธฐ
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration>
Configuration.xml ํ์ผ์ ์ด๋ ๊ฒ ์๊ฒผ๋ค. ๋ง์ด๋ฐํฐ์ค ํํ์ด์ง์์ ๋น๋ ํ์์ ๊ทธ๋๋ก ๋ถ์ฌ๋ฃ์ xml ํ์ผ์ ๋ง๋ค๊ณ ํ์ํ ๋๋ผ์ด๋ฒ ์ ๋ณด๋ง ์์ ํ๋ค.
#๋๋ผ์ด๋ฒ ๊ธฐ๋ณธ ์ ๋ณด ์ค์ <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="scott"/> <property name="password" value="tiger"/>
property ํ๊ทธ์ 4๊ฐ์ง ๊ธฐ๋ณธ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ค.
# ์คํํ ์ํ๋ฌธ์ ๊ฐ์ง xmlํ์ผ ์ง์ <mappers> <mapper resource="DeptMapper.xml"/> </mappers>
sql ์ฟผ๋ฆฌ๋ ๋งคํผ๋ผ๋ xml ํ์ผ์ ์์ฑํ๋ค.
** ๋ง์ฝ xml ๋ฌธ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ค์ง ์์ผ๋ฉด ์ฝ์์ฐฝ ๊ทผ์ฒ์ ์๋ source๋ฅผ ํด๋ฆญํ๋ค.
1. Test ํด๋์ค์ main ํจ์ ์คํ
#main OracleMyBatisService service = new OracleMyBatisService(); List<Dept> list = service.select(); for (Dept dept : list) { System.out.println(dept); }
์ค๋ผํด Scott ๊ณ์ ์ ์๋ Deptํ ์ด๋ธ์ JDBC ์ฐ๋์ ์ฌ์ฉํ ๊ฒ์ด๋ค. ๋จผ์ select() ๋ฉ์๋๋ก ์ฐ์ต์ ์์ํ๋ค. ๋ฉ์ธ์์๋ ์๋น์ค ํด๋์ค๋ง ์ฌ์ฉํ๋ค. ์๋น์ค ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ๋จผ์ ์์ฑํ๊ณ Dept์ ๋๋ฆญํ์ ์ list ๋ณ์์ service.select()๋ฅผ ํธ์ถํ๋ค.
2. ์๋น์ค ํด๋์ค
public class OracleMyBatisService { OracleMybatisDAO dao; public OracleMyBatisService() { dao = new OracleMybatisDAO(); } public List<Dept> select() { SqlSession session = MySqlSessionFactory.getSession(); List<Dept> list = null; //๋ฐํ๊ฐ์ ์ค๋น try { list = dao.selectAll(session); //dao์ SqlSession ์ ์ก }finally { session.close(); //connection.close()์ ๋น์ท, ๋ชจ๋ ํจ์๋ง๋ค ๋ซ๊ธฐ }return list; }// end class
์์ฑ์์์ DAO๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ๋ฉ์ธ์์ serviceํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ dao๊ฐ์ฒด๋ ์์ฑํ ์ ์๋ค.
2-1. ๋ฉ์๋ ์์์ SqlSession์ ์ป์ด์จ๋ค. (connection ์ป์ด์ค๊ธฐ์ ๋น์ทํ๋ค)
2-2. ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ ๋ฆฌ์คํธ์ dao์ ์ ๋ ํจ์๋ฅผ ํธ์ถํ๊ณ ์ฐ๊ฒฐ๋ ์ธ์ ์ ์ธ์๋ก ๋ณด๋ธ๋ค. ์ธ์ ์ฌ์ฉ ํ close()๋ก ์ ๋ซ์์ฃผ๊ณ ํธ์ถ๋ก ๋ฐ์์จ list๋ฅผ ๋ฆฌํดํ๋ค.
3. DAO ํด๋์ค
public class OracleMybatisDAO { public List<Dept> selectAll(SqlSession session) { List<Dept> list = session.selectList("selectAll"); return list; } }
3-1. daoํด๋์ค์ ์ฝ๋๋ ๊ฐ๋จํ๋ค. ์๋น์ค ํด๋์ค๋ฅผ ํตํด ์ธ์ ์ ๋ฐ์์ผ๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฟผ๋ฆฌ๋ง ์์ฑํ๋ฉด ๋๋ค. ์ฟผ๋ฆฌ๋ ๋งคํผ xml ํ์ผ์์ ์ฌ์ฉํ๋ค. ์ฌ๊ธฐ์ sqlsession ๊ฐ์ฒด์ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ๊ฐ์ธ select์ ์คํ์ selectList ํจ์๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฆฌ๊ณ sql ์ฟผ๋ฆฌ๋ฅผ ํธ์ถํ๊ธฐ ์ํด์ con.preparestatement(sql) ํ๋ ๊ฒ์ฒ๋ผ sql๋ฌธ์ ๋งคํผ์์ ์ง์ ํ ์์ด๋๋ก ํธ์ถํ๋ค.
4. Maper.xml ํ์ผ์ ๋ง๋ ๋ค.
5. sql select๋ฌธ์ select ํ๊ทธ ์์ ์์ฑํ๋ค.
6. ๊ฒฐ๊ณผ๋ฅผ resultType์ ์ ์ฅํ๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ๋ชจ๋ธ ํด๋์ค๋ Dept๋ก ์ง์ ํ๋ค.
# DTDMapper.xml <mapper namespace="org.mybatis.example.BlogMapper"> <select id="selectAll" resultType="com.dto.Dept"> <!-- id=selectAll ์คํ ํ ๊ฒฐ๊ณผ๋ฅผ resultType์ผ๋ก ์ ์ฅ --> select deptno, dname, loc from dept </select> </mapper>
resultSet์ while๋ฌธ์ผ๋ก ํ๋ํ๋ ๊บผ๋ด์ค๋ ์์ ์ด ์ฌ๋ผ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ๋ชจ๋ธํด๋์ค๋ฅผ ์ง์ ํ ๊ฒ์ด๋ค.
public class Dept { private int deptno; private String dname; private String loc;
๋ชจ๋ธ ํด๋์ค Dept๋ ๋ฉค๋ฒ๋ณ์ ์ด๋ฆ์ด dept ํ ์ด๋ธ์ ์ปฌ๋ผ์ด๋ฆ๊ณผ ์ผ์นํด์ผ ํ๋ค. ๋ํ ๋ฐ๋์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ์์ฑ์์ getter setter๋ฉ์๋๋ฅผ ๋ง๋ค๊ณ toString๊น์ง ์ค๋ฒ๋ผ์ด๋ฉ ํด์ค๋ค.
7. ๋งตํผ์์ dao๋ก ๋ฆฌํด
8. dao์์ ์๋น์ค๋ก ๋ฆฌํด
9. ์๋น์ค์์ ๋ฉ์ธ์ผ๋ก ๋ฆฌํด
10. ๋ฉ์ธ์์ ๋ฆฌํด๊ฐ ์ถ๋ ฅ
SQL๋ฌธ ์ถ๊ฐํด์ ๋ง์ด๋ฐํฐ์ค ์ฐ์ตํ๊ธฐ
1. selectByDeptno
<select id="selectByDeptno" resultType="com.dto.Dept"> select deptno, dname, loc from dept where deptno=10 </select>
#dao public Dept selectByDeptno(SqlSession session){ Dept dept = session.selectOne("selectByDeptno"); return dept; }
#service public Dept selectByDeptno() { SqlSession session = MySqlSessionFactory.getSession(); Dept dept = null; try { dept = dao.selectByDeptno(session); } finally { // TODO: handle exception }return dept; }
#main Dept dept = service.selectByDeptno(); System.out.println(dept);
2. selectByDeptnoUse
์ด๋ฒ์ deptno๋ฅผ ์ง์ ํด์ฃผ์ง ์๊ณ ๋ฉ์ธํจ์์์ ์ธ์๋ก ๋ฐ์์จ๋ค. ๋ฐ์์ฌ ํ๋ผ๋ฏธํฐ ํ์ ์ ์ฌ๊ธฐ์ ๋ฏธ๋ฆฌ ์ ํด์ค๋ค.
<select id="selectByDeptnoUse" parameterType="int" resultType="com.dto.Dept"> select deptno, dname, loc from dept where deptno = #{deptno} </select>
#dao public Dept selectByDeptnoUse(SqlSession session, int deptno) { Dept dept = session.selectOne("selectByDeptnoUse", deptno); return dept; }
#service public Dept selectByDeptnoUse(int deptno) { SqlSession session = MySqlSessionFactory.getSession(); Dept dept = null; try { dept = dao.selectByDeptnoUse(session, deptno); } finally { session.close(); }return dept; }
#main Dept dept2 = service.selectByDeptnoUse(40); System.out.println(dept2);
3. deptInsert
DML ๋ช ๋ น๋ฌธ์ ํธ๋์ญ์ ์ ์๋ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ปค๋ฐ, ๋กค๋ฐฑ ๋ฑ์ผ๋ก ์ข ๋ฃ๋ฅผ ํด์ผํ๋ค. ๋ง์ด๋ฐํฐ์ค๋ ์คํ ์ปค๋ฐ์ด ์๋๋ค. ๊ธฐ๋ณธ์ด false๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ dml๋ฌธ์ด ๋๋๋ฉด ์ปค๋ฐ์ ํด์ผํ๋ค.
<insert id="deptInsert" parameterType="com.dto.Dept"> insert into dept (deptno, dname, loc) values (#{deptno}, #{dname}, #{loc}) </insert>
dao public void insert(SqlSession session, Dept dept) { int num = session.insert("deptInsert", dept); System.out.println("์ถ๊ฐ๋ ๋ ์ฝ๋ ====" + num); }
service public void insert(Dept dept) { SqlSession session = MySqlSessionFactory.getSqlSession(); try { dao.insert(session, dept); session.commit();//๋ช ์์ ์ผ๋ก ๊ผญ ํด์ฃผ์ด์ผ ํจ. } finally { session.close(); } }
service.insert(new Dept(99, "๊ฐ๋ฐ","๊ฐ๋จ"));
4. deptDelete
mapper <delete id="deptDelete" parameterType="com.dto.Dept"> delete from dept where deptno = #{deptno} </delete>
dao public void delete(SqlSession session,int deptno) { int num= session.delete("deptDelete", deptno); System.out.println("์ญ์ ๋ ๊ฐฏ์ ===="+ num); }
service public void delete(int deptno) { SqlSession session = MySqlSessionFactory.getSqlSession(); try { dao.delete(session, deptno); session.commit();// ๋ช ์์ ์ผ๋ก ๊ผญ ํด์ฃผ์ด์ผ ํจ. } finally { session.close(); } }
Main OracleMyBatisService service = new OracleMyBatisService(); List<Dept> list = service.selectAll(); for (Dept dept : list) { System.out.println(dept); } Dept dept= service.selectByDeptno(99); System.out.println(dept); service.insert(new Dept(99, "๊ฐ๋ฐ","๊ฐ๋จ")); service.update(new Dept(99,"์์ ", "์์ธ")); service.delete(99);
5. deptRecordCount
dept ํ ์ด๋ธ์ ์ ์ฒด ๋ ์ฝ๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
<select id="deptRecordCount" resultType="int"> select count(*) from dept </select>
public int deptRecordCount(SqlSession session) { int num = session.selectOne("deptRecordCount"); return num; }
public int deptRecordCount() { SqlSession session = MySqlSessionFactory.getSqlSession(); int num = 0; try { num = dao.deptRecordCount(session); } finally { session.close(); }return num; }
System.out.println(service.deptRecordCount());
6. selectByHashMap
select ๊ฒฐ๊ณผ๋ฅผ ํด์ฌ๋งต์ผ๋ก ๋ฐ๋๋ค. ์กฐ๊ฑด๋ฌธ ๊ฒ์์ between a and b์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
<select id="selectByHashMap" parameterType="HashMap" resultType="Dept"> select * from dept where deptno between #{a} and #{b} </select>
public List<Dept> selectByHashMap(SqlSession session, HashMap<String, Integer> map){ List<Dept> list= session.selectList("selectByHashMap", map); return list; }
public List<Dept> selectByHashMap(HashMap<String, Integer> map){ SqlSession session = MySqlSessionFactory.getSqlSession(); List<Dept> list = null; try { list = dao.selectByHashMap(session, map); } finally { session.close(); }return list; }
HashMap<String, Integer> map = new HashMap<> (); map.put("a", 1); map.put("b", 50); List<Dept> list = service.selectByHashMap(map); for (Dept dept : list) { System.out.println(dept); }
7. selectInHashMap()
<select id="selectInHashMap" parameterType="HashMap" resultType="Dept"> select * from dept where deptno in (#{a},#{b},#{c}) </select>
public List<Dept> selectInHashMap (SqlSession session, HashMap<String,Integer> map){ List<Dept> list= session.selectList("selectInHashMap", map); return list; }
public List<Dept> selectInHashMap(HashMap<String,Integer> map){ SqlSession session = MySqlSessionFactory.getSqlSession(); List<Dept> list = null; try { list = dao.selectInHashMap(session, map); } finally { session.close(); }return list; }
map.put("a", 10); map.put("b", 70); map.put("c", 90); list=service.selectInHashMap(map); for (Dept d : list) { System.out.println(d); }
8. selectByDeptnoHashMap
<select id="selectByDeptnoHashMap" parameterType="int" resultType="HashMap"> select * from dept where deptno=#{deptno} </select>
public HashMap selectByDeptnoHashMap(SqlSession session,int empno) { HashMap map = session.selectOne("selectByDeptnoHashMap",empno); return map; }
public HashMap selectByDeptnoHashMap(int deptno) { SqlSession session = MySqlSessionFactory.getSqlSession(); HashMap map=null; try { map = dao.selectByDeptnoHashMap(session, deptno); } finally { session.close(); }return map; }
HashMap map2 = service.selectByDeptnoHashMap(10); System.out.println(map2); Set<String> keys = map2.keySet(); System.out.println(map2.get("DNAME")); System.out.println(keys);
ํ๋กํผํฐ ๋ง๋ค๊ธฐ
์์ผ๋ก ์ค๋ผํด ์ฐ๋์ ์ํ 4๊ฐ์ง ๊ธฐ๋ณธ์ ๋ณด๋ properties๋ก ๋ฑ๋กํ ํ ํค๊ฐ๋ง ๋ฐ๊ฟ์ ์ฝ๊ฒ ์ฌ์ฉํ ๊ฒ์ด๋ค. ๋์ค์ DB๊ฐ ๋ฐ๋๋ฉด ์ฌ๊ธฐ ์์ ์์ ํ๋ฉด ๋๋ค.
ํ๋ก์ ํธ์์ ์ค๋ฅธ์ชฝ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ๊ณ new -> file์ ์ ํํ๋ค.
์ด์ configuration.xmlํ์ผ์ ๊ฐ์ ์์ฑํ๋ ์ ๋ณด๋ฅผ ์์ ํ๋ค.
<!-- jdbc.propertiesํ์ผ ๋ฑ๋ก --> <properties resource="jdbc.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${oracle.jdbc.driver.OracleDriver}"/> <property name="url" value="${jdbc:oracle:thin:@localhost:1521:orcl}"/> <property name="userid" value="${soctt}"/> <property name="passwd" value="${tiger}"/> <!-- ๊ธฐ์กด ์ฌ์ฉํ๋ 4๊ฐ์ง ์ ๋ณด <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="scott"/> <property name="password" value="tiger"/> -->
๊ธฐ์กด์ ์์ฑํ๋ ์ ๋ณด๋ ์ฃผ์์ฒ๋ฆฌํ๊ณ ํ๋กํผํฐ์์ ์ผ๋ ๋ด์ฉ์ ์ถ๊ฐํด์ค๋ค.
๋งคํผ.xml ํ์ผ์ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ๊ธฐ
<mappers> <mapper resource="DeptMapper.xml"/> <mapper resource="DeptMapper2.xml"/> </mappers>
ํ๋ก์ ํธ ์์ ๋งคํผ๋ฅผ ๋ ํ๋ ๋ง๋ ๋ค configuration.xml ํ์ผ์ ๋งคํผ ๋ฆฌ์์ค๋ฅผ ํ๋ ๋ ์ถ๊ฐํ๋ค.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dept.DeptMapper2"> <select id="deptRecordCount" resultType="int"> select count(*) from dept </select> <select id="selectAll" resultType="com.dto.Dept"><!-- ๊ฒฐ๊ณผ๋ฅผ Dept์ Listํํ๋ก --> select deptno, dname, loc from dept </select> </mapper>
<mapper namespace="com.dept.DeptMapper2">
๋งคํผ์ ๋ค์์คํ์ด์ค๋ ์์ ํด์ฃผ๊ธฐ.
์ด๋ ๊ฒ ๋งคํผ๋ฅผ ์ฌ๋ฌ๊ฐ ๋ฑ๋กํ ๊ฒฝ์ฐ ๋์ค์ ๋งคํผ1์ ๋ด์ฉ์ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฟผ๋ฆฌ ์์ด๋ + ๋งคํผ ๋ค์์คํ์ด์ค๊น์ง ๊ฐ์ด ์ฌ์ฉํ๊ฒ ๋๋ค.
<!-- typealias ๋ฑ๋ก --> <typeAliases> <typeAlias type="com.dto.Dept" alias="Dept"></typeAlias> </typeAliases>
์ด๋ด ๊ฒฝ์ฐ configuration.xmp ์์ ๊ฐ๋จํ ๋ณ์นญ์ ์ง์ ํ๊ณ ์ฌ์ฉํ ์ ์๋ค. ๋ณ์นญ ์ง์ ํ ๋งคํผ์์ ๋ค ์์ ํ ๋ค ์ฌ์ฉํด์ผํ๋ค.
๐ NEXT : ๋ง์ด๋ฐํฐ์ค ์ฐ์ต๋ฌธ์ ํ์ด๋ณด๊ธฐ
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA ์๋ฐ Eclipse jee, ํฐ์บฃ์๋ฒ ํ๊ฒฝ์ค์ (0) 2020.08.26 JAVA ์๋ฐ ๋ง์ด๋ฐํฐ์ค mybatis ๋์ SQL (0) 2020.08.23 JAVA ์๋ฐ JDBC ์ฐ์ต - ์ํ์ ๋ณด ์กฐํํ๊ธฐ (0) 2020.08.20 JAVA ์๋ฐ JDBC ๋ฌธ์ ์ฐ์ต (0) 2020.08.19 JAVA ์๋ฐ JDBC ์ค๋ผํด DB ์ฐ๋ (0) 2020.08.18