Spring Framework Web
Web Web DB AOP DI Java EE 3
Web WebMVC Web Java 4
DB H2 Database Java H2 Database http://www.h2database.com/ Version 1.0 Zip 5
H2 > cd $H2_HOME/bin > java cp h2.jar org.h2.tools.server JDBC URL jdbc:h2:tcp://localhost/test JDBC Driver org.h2.driver sa 6
H2 http://localhost:8082/ 7
3-1 H2 H2 H2 H2 8
SQL H2 JDBC URL SQL 9
3-2 (1/2) ex3.zip H2 H2 members_h2.sql SELECT * FROM MEMBER 10
3-2 (2/2) ex3.war Web http://localhost:8080/ex3/ 11
(1/2) Spring Framework Spring DAO (Data Access Object) JDBC 13
(2/2) Spring Framework Spring ORM O/R ORM Hibernate JDO ibatis Oracle TopLink JPA 14
JDBC Java Database Connectivity Java SE API Java API API DB SQL DB SQL 15
JDBC 1. 2. 3. SQL 4. SQL 5. 6. 7. 8. 16
Spring Framework 1. 2. 3. SQL 4. SQL 5. 6. 7. 8. SF 17
JdbcTemplate JdbcTemplate Spring Framework JDBC DB DB SQL ResultSet JavaBean ResultSet iteration SF 18
JdbcTemplate (1/2) public class MemberDaoJDBCImpl implements MemberDao { private SimpleJdbcTemplate jdbctemplate; public void setdatasource(datasource datasource) { jdbctemplate = new SimpleJdbcTemplate(dataSource); public void insert(final MemberData member) { this.jdbctemplate.update(insert_sql, new Object[] { member.getname(), member.getloginname(), member.getpassword(), member.getdepartment(), member.getphonenumber() ); MemberDaoJDBCImpl.java 19
JdbcTemplate (2/2) private static final String FIND_ALL_SQL = "SELECT * FROM MEMBER"; public List<MemberData> findall() { return this.jdbctemplate.query(find_all_sql, new MemberRowMapper()); class MemberRowMapper implements ParameterizedRowMapper<MemberData> { public MemberData maprow(resultset rs, int rownum) throws SQLException { MemberData result = new MemberData(); result.setid(rs.getlong("id"));...// Bean return result; MemberDaoJDBCImpl.java 20
DAO <beans> <bean id="memberservice" class="sample.service.memberserviceimpl"> <property name="memberdao" ref="memberdaojdbc"/> </bean> <bean id="memberdaojdbc" class="sample.dao.memberdaojdbcimpl"> <property name="datasource" ref="datasource"/> </bean> <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="org.h2.driver"/> <property name="urn" value="jdbc:h2:tcp://localhost/test"/> <property name="username" value="sa"/> <property name="password" value=""/> 21 </bean> WEB-INF/spring-servlet.xml </beans>
3-3 ex33.zip /src/sample/dao/memberdaojdbcim pl.java /WebContents/WEB-INF/springservlet.xml 22
O/R
O/R Public class User { private long id; private String name; public void setid(long id) { this.id = id; public long getid() { return id; Java Mapping O/R Java Java Java Java
Hibernate Gavin King Java O/R http://www.hibernate.org ( ) 3.2.4 (2007 7 ) XML Java RDB Java POJO HQL Lazy Loading
POJO public publicclass classmemberdata { private privatelong longid; id; private privatestring name; name; public publiclong longgetid() getid() { return returnid; <?xml <?xml version="1.0" version="1.0"?>?> id; <!DOCTYPE <!DOCTYPE hibernate-mapping PUBLIC PUBLIC public publicvoid voidsetid(long setid(longid) id) { "-//Hibernate/Hibernate Mapping Mapping DTD//EN" DTD//EN" this.id this.id = id; "http://hibernate.sourceforge.net/hibernate- id; mapping-3.0.dtd"> public publicstring getname() getname() { <hibernate-mapping> return returnname; <class <class name="sample.data.memberdata" name; table="member"> <id name="id" column="id"> public publicvoid voidsetname(string setname(stringname) <id name) { name="id" column="id"> <generator class="native"/> this.name this.name = name; <generator class="native"/> name; </id> </id> <property name="name" column="name" /> <property name="name" column="name" /> </class> </class> POJO </hibernate-mapping>
Session DB Session Factory Hibernate Session Session
Hibernate Spring Framework DB Session Factory Hibernate Session Spring Framework Session
HibernateTemplate Spring Framework Hibernate org.springframework.orm.hibernate3.hib ernatetemplate Hibernate Session
HibernateTemplate (1/2) public class MemberDaoHibernateImpl implements MemberDao { private HibernateTemplate hibernatetemplate; public void setsessionfactory(sessionfactory sessionfactory) { this.hibernatetemplate = new HibernateTemplate(sessionFactory); MemberDaoHibernateImpl.java 30
HibernateTemplate (2/2) private static final String FIND_BY_DEPARTMENT_HQL = "FROM MemberData WHERE department =?"; public void insert(final MemberData member) { this.hibernatetemplate.persist(member); public List<MemberData> findbydepartment(string department) { return this.hibernatetemplate.find( FIND_BY_DEPARTMENT_HQL, department); MemberDaoHibernateImpl.java 31
DAO (1/2) <beans> <bean id="memberservice" class="sample.service.memberserviceimpl"> <property name="memberdao" ref="memberdaohibernate"/> </bean> <bean id="memberdaohibernate" class="sample.dao.memberdaohibernateimpl"> <property name= sessionfactory" ref= sessionfactory"/> </bean> <bean id="datasource" class="org.apache.commons.dbcp.basicdatasource" destroy-method="close"> <property name="driverclassname" value="org.h2.driver"/> <property name="urn" value="jdbc:h2:tcp://localhost/test"/> <property name="username" value="sa"/> <property name="password" value=""/> 32 </bean> WEB-INF/spring-servlet.xml
DAO (2/2) <bean id="sessionfactory" class="org.springframework.orm.hibernate3.localsessionfact orybean"> <property name="datasource" ref="datasource"/> <property name="mappingresources"> <list> <value>sample/data/memberdata.hbm.xml</value> </list> </property> <property name="hibernateproperties"> <value> hibernate.dialect=org.hibernate.dialect.h2dialect hibernate.show_sql=true </value> </property> </bean> </beans> WEB-INF/spring-servlet.xml 33
3-4 ex34.zip /src/sample/dao/memberdaohibernateimpl.java /src/sample/data/memberdata.hbm.xml /src/sample/data/memberdata.java /WebContents/WEB-INF/spring-servlet.xml 34
Spring Java/J2EE Application Framework http://static.springframework.org/spring /docs/2.0.x/reference/index.html II Middle Tier Data Access 10. DAO Support 11. Data Access using JDBC 12. Object Relational Mapping (ORM) data access 35
JDBC Java SE Java Database Connectivity (JDBC) http://java.sun.com/javase/technologies/d atabase/index.jsp Hibernate Hibernate Reference Documentation http://www.hibernate.org/hib_docs/v3/refe rence/en/html/ 36