1.1. User ¶
- 규 .
- (JavaBean)
- 간 고 .
- .
-
- 고 고
- getter setter , .
- 고 고
- 간 고 .
- (JavaBean)
- User :
package springbook.user.domain; public class User { String id; String name; String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
- USER
UserId | VARCHAR(10) | Primary Key |
Name | VARCHAR(20) | Not Null |
Password | VARCHAR(20) | Not Null |
1.2. UserDao ¶
- UserDao : JDBC , 기 DAO
package springbook.user.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import springbook.user.domain.User; public class UserDao { public void add(User user) throws SQLException, ClassNotFoundException{ Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book"); PreparedStatement ps = c.prepareStatement("insert into users(id, name, password) values(?,?,?)"); ps.setString(1, user.getId()); ps.setString(2, user.getName()); ps.setString(3, user.getPassword()); ps.executeUpdate(); ps.close(); c.close(); } public User get(String id) throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book"); PreparedStatement ps = c.prepareStatement("select * from users where id = ?"); ps.setString(1, id); ResultSet rs = ps.executeQuery(); rs.next(); User user = new User(); user.setId(rs.getString("id")); user.setName(rs.getString("name")); user.setPassword(rs.getString("password")); rs.close(); ps.close(); c.close(); return user; } }
1.3. main() ¶
-
- DAO 기 거
- UserDao 기 .
- UserDao 기 .
- .
- DAO 기 거
- main
public static void main(String[] args) throws SQLException, ClassNotFoundException { UserDao dao = new UserDao(); User user = new User(); user.setId("zeropage"); user.setName(""); user.setPassword("zp"); dao.add(user); System.out.println(user.getId() + " 공"); User user2 = dao.get(user.getId()); System.out.println(user2.getName()); System.out.println(user2.getPassword()); System.out.println(user2.getId() + " 공"); }
- 공 과 .
zeropage 공 zp zeropage 공
2.2.1. UserDao ¶
- DB 결 게 .
- / SQL Statement 고 .
- 고 close .
- : DB 결 기
- add() get() .
- 개 DAO 고
- DB 군 게
- DB 군 .
- DB 군 게
- 개 DAO 고
- add() get() .
2.2.2. ¶
- .
- UserDao : getConnection() 거
public void add(User user) throws SQLException, ClassNotFoundException { Connection c = getConnection(); } public void get(String id) throws SQLException, ClassNotFoundException { Connection c = getConnection(); } private Connection getConnection() throws SQLException, ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); Connection c = DriverManager.getConnection("jdbc:mysql://localhost/springbook", "spring", "book"); }
- 개 DAO DB getConnection() .
3. DAO ¶
- 기
-
- 격
- 격 기, 기
- 격 기, 기
- 고 구 ->
-
- 1.3.1
-
- 기 기 계 경 ()
- 기 . .
- 기 기 계 경 ()
- 계 .
-
- 1.3.2
- 결 .
- 공 격
- interface
- 계
- 공 격
- 결 .
- 1.3.3 계
- 기 고 간 고 .
- .
- .
- 간 계
- 간 계 .
- 계 : 계 고 .
-
- 구 . ()
-
- 간 계 .
- 기 고 간 고 .
- 1.3.4 과
- 개 (OCP) 객 계(SOLID)
- 고 경
- 고 경
- 결
- 개
-
- .
- .
- 결
- 감
- 결 계 게 구 .
- 게 .
- 감
- 개
-
-
- 경 고 고, 구 꿔 게
-
- 개 (OCP) 객 계(SOLID)
- 결국.. ?
- 객 계 과 게 개 게
- 객 계 과 게 개 게
4. (IoC) ¶
- 1.4.1
-
- 객 결고 .
- - 과 .
- DaoFactory : 구 결 .
- 객 결고 .
-
- 1.4.2
-
public class DaoFactory{ // ConnectionMaker 고 public UserDao userDao( ){ return new UserDao(new DConnectionMaker()); } public AccountDao accountDao( ){ return new AccountDao(new DConnectionMaker()); } public MessageDao messageDao( ){ return new MessageDao(new DConnectionMaker()); } }
public class DaoFactory{ public UserDao userDao( ){ return new UserDao(connectionMaker()); } public AccountDao accountDao( ){ return new AccountDao(connectionMaker()); } public MessageDao messageDao( ){ return new MessageDao(connectionMaker()); } // public ConnectionMaker connectionMaker(){ return new DConnectionMaker(); } }
- 1.4.3 권 계
- ?
- 그 구
- 권 게 .
- 기.
- .
- .
- .
- 그 구
- ?
- IoC 극까 .
- 개 .
- 개 .
5. IoC ¶
5.1 IoC
- 5.1.1
- 5.1.2
- ->
- 1. 고 @Configuration .
- 1. 고 @Configuration .
- ->
@Configuration public class DaoFactory{}
- 2. @Bean .
@Configuration public class DaoFactory{ @Bean public UserDao userDao(){ ...} }
public static void main(Strings[] args) throws ClassNotFoundException, SQLException{ ApplicatioContext context = new AnnotationConfigApplicationContext(DaoFactory.class); }
- 2. ApplicationContext getBean() .
public static void main(Strings[] args) throws ClassNotFoundException, SQLException{ ApplicatioContext context = new AnnotationConfigApplicationContext(DaoFactory.class); UserDao dao = context.getBean("userDao", UserDao.class); }
getBean() : ApplicationContext . "" ApplicationContext . 결과 고 각 . userDao() 기 "" userDao 갔. myUserDao() "myUserDao" . 기 Object 게 5 .
5.2 6. ¶
6.1
- 고 기 . 기 .
- 경 기 걸 기 게 . , 기 .
- 구 계
- 1. private 고 기 .
- 2. 기 .
- 3. 경 .
- 4. 기 .
- 1. private 고 기 .
- 값 고 기 . 기 .
- (scope) : 고 고 . 기 개 거 계 . 경 (prototype), (request), (session) .
7. 계 (DI) ¶
- 계 : .
- 계 (DI)? : 계 (Dependency Injection) (IoC) 금 게 기 .
- 계
- 계 . 그기 고 .
- 계 3 결.
- 계 공() .
- 계 . 그기 고 .
- 계
- DI : DI 경 게 계 기 꿔 경, 게 .
- DI
- Bean : DI 게 기 Bean .
- Bean Factory : 계 결기 Bean Factory Bean 고 간 계 .
- 계 (Dependency Lookup) : DI 기 DI Bean . DL Bean 계 .
- Bean : DI 게 기 Bean .
8. XML ¶
- XML
- DI계 공고 . XML 기 기 고 .
- <beans> : @Configuration . 개 <bean> 간.
- <bean> : @Bean .
- <id> : @Bean . getBean() .
- <class> : @Bean return 값. 까 .
- <property> : @Bean DI . .
- <name> : set .
- <ref> : Bean id.
- <value> : Bean 값 <ref> . 값 게 기 , 값 .
- <name> : set .
- <id> : @Bean . getBean() .
- <bean> : @Bean .
- <beans> : @Configuration . 개 <bean> 간.
- (Java )
@Configuration class DaoFactory { ... @Bean public ConnectionMaker connectionMaker() { return new DConnectionMaker(); } @Bean userDao setConnectionMaker(connectionMaker()) { ... }; }
- (XML)
<beans> <bean id="myConnectionMaker" class="springbook.user.dao.DConnectionMaker" /> <bean id="userDao" class="springbook.dao.UserDao"> <property name="connectionMaker ref="myConnectionMaker" /> </bean> </beans>
- XML
- GenericXmlApplicationContext("xml 경") .
- GenericXmlApplicationContext("xml 경") .
ApplicationContext context = new GenericXmlApplicationContext("springbook/user/dao/daoContext.xml")