U E D R , A S I H C RSS

토비의스프링3/오브젝트와의존관계


1. 감 DAO

  • JDBC API DB DAO 기.
  • DAO(Data Access Object)
    • DB , .

1.1. User

  • .
    • (JavaBean)
      • .
      • .


        • getter setter , .
  • 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 .
    • .
  • 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  

1.4. 감 DAO ?

  • 감 DAO?
    • UserDao
      • main()

    • UserDao .
DeleteMe) . -

2. DAO

2.1.

  • . 그 ?
  • : .

      • 5 > 5
    • 게?

  • 경과 .

      • .
      • , .

2.2.

2.2.1. UserDao

  1. DB .
  2. / SQL Statement .
  3. close .

  4. : DB
    • add() get() .
      • DAO
        • DB
        • DB .

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() .

2.2.3. :



    • .

      • .
    • ( , )
DeleteMe) -

2.3. DB

3. DAO




      • 기,
    • ->
  • 1.3.1

      • ()
      • . .
    • .
  • 1.3.2
    • .


      • interface

  • 1.3.3
    • 고 간 .
      • .

      • .
      • 계 : .


        • . ()
  • 1.3.4
    • (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
    • (bean) : . . .
    • (bean factory) : IoC. IoC . .
    • (application context) : IoC . , . IoC . xml .
    • : IoC . IoC 고 구 .
    • /IoC : IoC /IoC .
  • 5.1.2
    • ->
      • 1. @Configuration .

@Configuration
public class DaoFactory{}
  • 2. @Bean .

@Configuration
public class DaoFactory{
@Bean
public UserDao userDao(){ ...}
}
  • ->
    • 1. ApplicationContext . @Configuration AnnotationConfigApplicationContext @Configuration .

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
  • 5.2.1
    • @Configuration IoC . @Configuration @Bean getBean() .
  • 5.2.2

      1. .
      2. IoC .
      3. .

6.

6.1
  • . .
  • . , .

    • 1. private .
    • 2. .
    • 3. .
    • 4. .
6.2
  • . .
6.3
  • (scope) : . . 경 (prototype), (request), (session) .

7. (DI)

  • 계 : .
  • (DI)? : (Dependency Injection) (IoC) .

      1. . 그 .
      2. 3 .
      3. 공() .
  • DI : DI 경, .
  • DI
    • Bean : DI Bean .
    • Bean Factory : Bean Factory Bean .
    • (Dependency Lookup) : DI DI Bean . DL 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> . , .
  • (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 경") .

ApplicationContext context = new GenericXmlApplicationContext("springbook/user/dao/daoContext.xml")

3
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:21
Processing time 0.0596 sec