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")