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










