日系框架之seasar2(S2Hibernate3)

来源:互联网 发布:java文件上传配置虚拟 编辑:程序博客网 时间:2024/04/24 23:22

 官方主页:http://s2hibernate.seasar.org/ja/

 

所需Jar包列表:

antlr-2.7.6.jar
aopalliance-1.0.jar
commons-collections-3.1.jar
commons-lang-2.3.jar
commons-logging-1.1.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
ejb3-persistence.jar
geronimo-j2ee_1.4_spec-1.0.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-validator.jar
hsqldb-1.8.0.1.jar
javassist-3.4.GA.jar
jta-1.1.jar
junit-3.8.2.jar
log4j.jar
ognl-2.6.9-patch-20070908.jar
poi-3.0-FINAL.jar
s2-extension-2.4.29.jar
s2-framework-2.4.29.jar
s2-tiger-2.4.29.jar
slf4j-api-1.4.2.jar
slf4j-log4j12.jar
s2-hibernate-1.1.2.jar

 

步骤如下:

启动HSQLDB并执行如下DDL:

  1. CREATE TABLE EMP
  2.        (EMPNO NUMERIC(4) NOT NULL PRIMARY KEY,
  3.         ENAME VARCHAR(10),
  4.         JOB VARCHAR(9),
  5.         MGR NUMERIC(4),
  6.         HIREDATE DATE,
  7.         SAL NUMERIC(7, 2),
  8.         COMM NUMERIC(7, 2),
  9.         DEPTNO NUMERIC(2));
  10. INSERT INTO EMP VALUES (7369, 'SMITH',  'CLERK',     7902,
  11.         '1980-12-17',  800, NULL, 20);
  12. INSERT INTO EMP VALUES (7499, 'ALLEN',  'SALESMAN',  7698,
  13.         '1981-02-20', 1600,  300, 30);
  14. INSERT INTO EMP VALUES (7521, 'WARD',   'SALESMAN',  7698,
  15.         '1981-02-22', 1250,  500, 30);
  16. INSERT INTO EMP VALUES (7566, 'JONES',  'MANAGER',   7839,
  17.         '1981-04-02',  2975, NULL, 20);
  18. INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN',  7698,
  19.         '1981-09-28', 1250, 1400, 30);
  20. INSERT INTO EMP VALUES (7698, 'BLAKE',  'MANAGER',   7839,
  21.         '1981-05-01',  2850, NULL, 30);
  22. INSERT INTO EMP VALUES (7782, 'CLARK',  'MANAGER',   7839,
  23.         '1981-06-09',  2450, NULL, 10);
  24. INSERT INTO EMP VALUES (7788, 'SCOTT',  'ANALYST',   7566,
  25.         '1982-12-09', 3000, NULL, 20);
  26. INSERT INTO EMP VALUES (7839, 'KING',   'PRESIDENT', NULL,
  27.         '1981-11-17', 5000, NULL, 10);
  28. INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN',  7698,
  29.         '1981-09-08',  1500,    0, 30);
  30. INSERT INTO EMP VALUES (7876, 'ADAMS',  'CLERK',     7788,
  31.         '1983-01-12', 1100, NULL, 20);
  32. INSERT INTO EMP VALUES (7900, 'JAMES',  'CLERK',     7698,
  33.         '1981-12-03',   950, NULL, 30);
  34. INSERT INTO EMP VALUES (7902, 'FORD',   'ANALYST',   7566,
  35.         '1981-12-03',  3000, NULL, 20);
  36. INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK',     7782,
  37.         '1982-01-23', 1300, NULL, 10);
  38. CREATE TABLE DEPT
  39.        (DEPTNO NUMERIC(2) NOT NULL PRIMARY KEY,
  40.         DNAME VARCHAR(14),
  41.         LOC VARCHAR(13),
  42.         VERSIONNO NUMERIC(8));
  43. INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK', 0);
  44. INSERT INTO DEPT VALUES (20, 'RESEARCH',   'DALLAS', 0);
  45. INSERT INTO DEPT VALUES (30, 'SALES',      'CHICAGO', 0);
  46. INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON', 0);
  47. COMMIT;

app.dicon

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
  3.     "http://www.seasar.org/dtd/components24.dtd">
  4. <components>
  5.     <include path="examples/dicon/Employee.dicon"/>
  6.     <include path="examples/dicon/EmployeeAutoDao.dicon"/>
  7.     <include path="examples/dicon/DepartmentAutoDao.dicon"/>
  8.     
  9. </components>

hibernate.cfg.xml

  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3.     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6.     <session-factory>
  7.         <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
  8.         <property name="show_sql">true</property>
  9.         <mapping resource="examples/entity/Employee.hbm.xml" />
  10.         <mapping resource="examples/entity/Department.hbm.xml" />
  11.     </session-factory>
  12. </hibernate-configuration>

jdbc.dicon

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
  3.     "http://www.seasar.org/dtd/components21.dtd">
  4. <components namespace="jdbc">
  5.     <include path="jta.dicon"/>
  6.     <component name="xaDataSource" class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
  7.         <property name="driverClassName">
  8.             "org.hsqldb.jdbcDriver"
  9.         </property>
  10.         <property name="URL">
  11.             "jdbc:hsqldb:hsql://localhost:9001"
  12.         </property>
  13.         <property name="user">"sa"</property>
  14.         <property name="password">""</property>
  15.     </component>
  16.     <component name="connectionPool" class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
  17.         <property name="timeout">600</property>
  18.         <property name="maxPoolSize">10</property>
  19.         <property name="allowLocalTx">true</property>
  20.         <destroyMethod name="close"/>
  21.     </component>
  22.     <component name="DataSource" class="org.seasar.extension.dbcp.impl.DataSourceImpl" />
  23.     
  24. </components>

s2hibernate.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
  3. "http://www.seasar.org/dtd/components.dtd">
  4. <components namespace="s2hibernate">
  5.     <include path="j2ee.dicon"/>
  6.     
  7.     <component class="org.seasar.hibernate3.impl.S2SessionFactoryImpl" >
  8.         <initMethod name="setConfigPath">
  9.             <arg>"hibernate.cfg.xml"</arg>
  10.         </initMethod>             
  11.     </component>      
  12.     <component class="org.seasar.hibernate3.dao.impl.HibernateDaoMetaDataFactoryImpl"/>
  13.     <component name="readOnly" class="org.seasar.hibernate3.interceptor.ReadOnlySessionInterceptor"/>
  14.     <component name="interceptor" class="org.seasar.hibernate3.dao.interceptors.S2HibernateDaoInterceptor"/>
  15. </components>

log4j.properties

  1. log4j.category.org.seasar=DEBUG, C
  2. log4j.additivity.org.seasar=false
  3. log4j.appender.C=org.apache.log4j.ConsoleAppender
  4. log4j.appender.C.Target=System.out
  5. log4j.appender.C.ImmediateFlush=true
  6. log4j.appender.C.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.C.layout.ConversionPattern=%-5p %d [%t] %m%n
  8. log4j.category.net.sf.hibernate=DEBUG, C
  9. log4j.additivity.net.sf.hibernate=false

DepartmentAutoDao.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
  3. "http://www.seasar.org/dtd/components.dtd">
  4. <components>
  5.     <include path="s2hibernate.dicon"/>
  6.     <component class="examples.dao.DepartmentAutoDao">
  7.         <aspect>j2ee.requiredTx</aspect>
  8.         <aspect>s2hibernate.interceptor</aspect>
  9.     </component>
  10. </components>

Employee.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
  3. "http://www.seasar.org/dtd/components.dtd">
  4. <components>
  5.     <include path="j2ee.dicon"/>
  6.     <component class="org.seasar.hibernate3.impl.S2SessionFactoryImpl"/>
  7.     <component class="examples.dao.EmployeeDaoImpl">
  8.         <aspect>j2ee.requiredTx</aspect>
  9.     </component>
  10. </components>

EmployeeAutoDao.dicon

  1. <?xml version="1.0" encoding="Shift_JIS"?>
  2. <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
  3. "http://www.seasar.org/dtd/components.dtd">
  4. <components>
  5.     <include path="s2hibernate.dicon"/>
  6.     
  7.     <component class="examples.dao.EmployeeAutoDao">
  8.         <aspect>j2ee.requiredTx</aspect>
  9.         <aspect>s2hibernate.interceptor</aspect>
  10.     </component>
  11. </components>

DepartmentAutoDao.java

  1. package examples.dao;
  2. import java.util.List;
  3. import examples.entity.Department;
  4. public interface DepartmentAutoDao {
  5.     
  6.     public Class<Department> BEAN = Department.class;
  7.     //load
  8.     public Department load(short empno);
  9.     //引数にListをしていする場合
  10.     public String getDepartmentByDeptno_ARGS = "deptno";
  11.     public String getDepartmentByDeptno_EAGER = "employee";
  12.     public Department getDepartmentByDeptno( int deptno );
  13.     public String findAll_EAGER = "employee";
  14.     public List<?> findAll( );
  15.     
  16.     //public String getDept_HQL = "from Department as d where d.deptno = :deptno";
  17. //  public String getDept_HQL = "select d from Department as d where d.deptno = :deptno";
  18.     public String getDept_HQL = "from Department as d where d.deptno = :deptno";
  19.     public String getDept_ARGS = "deptno";
  20.     public Department getDept(int deptno);
  21.     public String getDeptName_HQL = "select d.dname from Department as d where d.deptno = :deptno";
  22.     public String getDeptName_ARGS = "deptno";
  23.     public String getDeptName(int deptno);
  24.     
  25. }

EmployeeAutoDao.java

  1. package examples.dao;
  2. import java.math.BigDecimal;
  3. import java.util.List;
  4. import examples.dto.EmployeeSalDto;
  5. import examples.dto.EmployeeSearchDto;
  6. import examples.dto.EmployeeSimpleDto;
  7. import examples.entity.Employee;
  8. public interface EmployeeAutoDao {
  9.     
  10.     public Class<Employee> BEAN = Employee.class;
  11.     //追加、削除、更新、保存or更新をする場合
  12.     public void save(Employee employee);
  13.     public void delete(Employee employee);
  14.     public void update(Employee employee);
  15.     public void saveOrUpdate(Employee employee);
  16.     //オブジェクトの取得
  17.     public Employee load(Integer empno);
  18.     //オブジェクトをロックをかけて取得
  19.     public String loadLock_LOCK = "UPGRADE" ;
  20.     public Employee loadLock(Integer empno);
  21.     
  22.     //HQLを指定しないで実行する場合
  23.     public String   getEmployeeByEmpNo_ARGS = "empno";
  24.     public Employee getEmployeeByEmpNo(Integer empNo);
  25.     public String  getEmployeeByJobDeptno_ARGS = "job,deptno";
  26.     public List<?> getEmployeeByJobDeptno(String job, int deptno);
  27.     
  28.     //HQLを指定して実行する場合
  29.     public String  getHQLAllEmployee_HQL = "from Employee emp order by emp.empno";
  30.     public List<?> getHQLAllEmployee();
  31.     //何も指定していない場合
  32.     public List<?> getAllEmployee();
  33.     //firstResult,maxResultsを指定する場合
  34.     public String  getEmployeeList_ARGS = "firstResult,maxResults";
  35.     public String  getEmployeeList_HQL = "from Employee emp order by emp.empno";
  36.     public List<?> getEmployeeList(int firstResult ,int MaxResults );
  37.     //戻り値がintの場合
  38.     public String getEmployeeCount_HQL = "select count(emp) from Employee emp";
  39.     public int getEmployeeCount();
  40.     //戻り値がStringの場合
  41.     public String getEmployeeNameById_HQL 
  42.                 = "select emp.ename from Employee emp where empno = :employeeId ";
  43.     public String getEmployeeNameById_ARGS = "employeeId";
  44.     public String getEmployeeNameById(Integer employeeId);
  45.     //NamedQuery呼び出しを使う場合
  46.     //(Employee.hbm.xmlの"examples.hibernate.dao.EmployeeAutoDao_getEmployeeByJob"に対応)
  47.     public String  getEmployeeByJob_ARGS = "job";
  48.     public List<?> getEmployeeByJob(String job);
  49.     //NamedQueryで戻り値がStringになるようなSQL文を使う場合
  50.     //(Employee.hbm.xmlの"examples.hibernate.dao.EmployeeAutoDao_getSQLEmployeeNameById"に対応)
  51.     public String getSQLEmployeeNameById_ARGS = "employeeId";
  52.     public String getSQLEmployeeNameById(Integer employeeId);   
  53.     
  54.     //NamedQueryで戻り値がLongになるようなSQL文を使う場合
  55.     //(Employee.hbm.xmlの"getSQLEmployeeIdByName"NamedQueryを実行)
  56.     public String  getSQLEmployeeIdByName_ARGS = "employeeName";
  57.     public Integer getSQLEmployeeIdByName(String employeeName);
  58.     
  59.     //引数にListをしていする場合
  60.     public String  getEmployeeByIdList_HQL = "from Employee emp where emp.empno in (:empnoList)";
  61.     public String  getEmployeeByIdList_ARGS = "empnoList";
  62.     public List<?> getEmployeeByIdList( List<?> empnoList );
  63.     
  64.     //OrderByのフィールドを指定する場合
  65.     public String  getEmployeeOrderByField_ARGS = "orderBy";
  66.     public List<?> getEmployeeOrderByField( String orderBy );
  67.     
  68.     //ARGSアノテーションに比較オペレーター(>)を指定した場合
  69.     public String  getEmployeeByGtSal_ARGS = "sal >";
  70.     public List<?> getEmployeeByGtSal( BigDecimal sal );
  71.     //ARGSアノテーションに比較オペレーター(<)を指定した場合
  72.     public String  getEmployeeByLtSal_ARGS = "sal <";
  73.     public List<?> getEmployeeByLtSal( BigDecimal sal );
  74.     
  75.     //ARGSアノテーションに比較オペレーター(>,<)を指定した場合
  76.     //指定したフィールドが指定した範囲の値のオブジェクトを取得したいとき
  77.     public String  getEmployeeByGtLtSal_ARGS = "sal >,sal <";
  78.     public List<?> getEmployeeByGtLtSal( BigDecimal BigDecimal ,BigDecimal toSal );
  79.     //ARGSアノテーションに比較オペレーター(=)を指定した場合
  80.     public String getEmployeeByJobDeptnoEq_ARGS = "job =,deptno =";
  81.     public List<?> getEmployeeByJobDeptnoEq(String job, int deptno);
  82.     
  83.     //ARGSアノテーションに比較オペレーター(like)を指定した場合
  84.     public String  getEmployeeByLikeEmane_ARGS = "ename like";
  85.     public List<?> getEmployeeByLikeEmane( String ename );
  86.     //ARGSアノテーションに比較オペレーター(in)を指定した場合
  87.     public String  getEmployeeByInIdList_ARGS = "empno in";
  88.     public List<?> getEmployeeByInIdList( List<?> empnoList );
  89.         
  90.     //ARGSアノテーションに比較オペレーター(>=,<=)を指定した場合(EmployeeSearchDto)
  91.     //指定したフィールドが指定した範囲の値のオブジェクトを取得したいとき
  92.     public String  getEmployeeByDto_PROPERTY = "empno,ename,job,mgr,deptno," +
  93.             "hiredate >= fromHiredate,hiredate <= toHiredate,sal >= fromSal,sal <= toSal";
  94.     public List<?> getEmployeeByDto( EmployeeSearchDto dto );
  95.     //dtoとしてEmployeeを指定して処理する場合
  96.     public List<?> getEmployeeByEmployeeDtoAuto( Employee dto );
  97.     
  98.     //dtoとしてEmployeeSimpleDtoを指定して処理する場合
  99.     public List<?> getEmployeeByEmployeeSimpleDtoAuto( EmployeeSimpleDto dto );
  100.     //Dtoの値をHQLに渡して実行する場合
  101.     
  102.     public String  getEmployeeBySalDto_PROPERTY = "fromSal,toSal";
  103.     public List<?> getEmployeeBySalDto( EmployeeSalDto dto );
  104.     
  105. }

EmployeeDao.java

  1. package examples.dao;
  2. import examples.entity.Employee;
  3. public interface EmployeeDao {
  4.     public Employee getEmployee(int empno);
  5.     
  6.     public void save(Employee employee);
  7. }

EmployeeDaoImpl.java

  1. package examples.dao;
  2. import java.util.List;
  3. import org.hibernate.Query;
  4. import org.seasar.hibernate3.S2SessionFactory;
  5. import examples.entity.Employee;
  6. public class EmployeeDaoImpl implements EmployeeDao {
  7.     private static final String HQL = "from Employee where empno = ?";
  8.     private S2SessionFactory sessionFactory_;
  9.     public EmployeeDaoImpl(S2SessionFactory sessionFactory) { 
  10.         sessionFactory_ = sessionFactory;
  11.     }
  12.     public Employee getEmployee(int empno) {
  13.         
  14. //      List result = sessionFactory_.getSession().find(
  15. //          HQL, new Integer(empno), Hibernate.INTEGER);
  16.         Query query = sessionFactory_.getSession().createQuery(HQL);
  17.         query.setInteger(0new Integer(empno));
  18.         List<?> result = query.list();
  19.         if (result.size() > 0) {
  20.             return (Employee) result.get(0);
  21.         } else {
  22.             return null;
  23.         }
  24.     }
  25.     
  26.     public void save(Employee employee) {
  27.         sessionFactory_.getSession().save(employee);
  28.     }
  29. }

EmployeeSalDto.java

  1. package examples.dto;
  2. import java.math.BigDecimal;
  3. public class EmployeeSalDto {
  4.     
  5.     private BigDecimal fromSal;
  6.     private BigDecimal toSal;
  7.     public EmployeeSalDto() {
  8.     }
  9.     public BigDecimal getFromSal() {
  10.         return fromSal;
  11.     }
  12.     public void setFromSal(BigDecimal fromSal) {
  13.         this.fromSal = fromSal;
  14.     }
  15.     public BigDecimal getToSal() {
  16.         return toSal;
  17.     }
  18.     public void setToSal(BigDecimal toSal) {
  19.         this.toSal = toSal;
  20.     }
  21. }

EmployeeSearchDto.java

  1. package examples.dto;
  2. import java.io.Serializable;
  3. import java.math.BigDecimal;
  4. public class EmployeeSearchDto implements Serializable {
  5.     
  6.     private static final long serialVersionUID = 1L;
  7.     private Integer empno;
  8.     private String ename;
  9.     private String job;
  10.     private Short mgr;
  11.     private java.util.Date fromHiredate;
  12.     private java.util.Date toHiredate;
  13.     private BigDecimal fromSal;
  14.     private BigDecimal toSal;
  15.     private Integer deptno;
  16.     public EmployeeSearchDto() {
  17.     }
  18.     public Integer getEmpno() {
  19.         return this.empno;
  20.     }
  21.     public void setEmpno(Integer empno) {
  22.         this.empno = empno;
  23.     }
  24.     public java.lang.String getEname() {
  25.         return this.ename;
  26.     }
  27.     public void setEname(java.lang.String ename) {
  28.         this.ename = ename;
  29.     }
  30.     public java.lang.String getJob() {
  31.         return this.job;
  32.     }
  33.     public void setJob(java.lang.String job) {
  34.         this.job = job;
  35.     }
  36.     public Short getMgr() {
  37.         return this.mgr;
  38.     }
  39.     public void setMgr(Short mgr) {
  40.         this.mgr = mgr;
  41.     }
  42.     public java.util.Date getFromHiredate() {
  43.         return this.fromHiredate;
  44.     }
  45.     public void setFromHiredate(java.util.Date fromHiredate) {
  46.         this.fromHiredate = fromHiredate;
  47.     }
  48.     public java.util.Date getToHiredate() {
  49.         return this.toHiredate;
  50.     }
  51.     public void setToHiredate(java.util.Date toHiredate) {
  52.         this.toHiredate = toHiredate;
  53.     }
  54.     public BigDecimal getFromSal() {
  55.         return this.fromSal;
  56.     }
  57.     public void setFromSal(BigDecimal fromSal) {
  58.         this.fromSal = fromSal;
  59.     }
  60.     public BigDecimal getToSal() {
  61.         return this.toSal;
  62.     }
  63.     public void setToSal(BigDecimal toSal) {
  64.         this.toSal = toSal;
  65.     }
  66.     public Integer getDeptno() {
  67.         return this.deptno;
  68.     }
  69.     public void setDeptno(Integer deptno) {
  70.         this.deptno = deptno;
  71.     }
  72.     public String toString() {
  73.         StringBuffer buf = new StringBuffer("[");
  74.         buf.append(empno).append(", ");
  75.         buf.append(ename).append(", ");
  76.         buf.append(job).append(", ");
  77.         buf.append(mgr).append(", ");
  78.         buf.append(fromHiredate).append(", ");
  79.         buf.append(toHiredate).append(", ");
  80.         buf.append(fromSal).append(", ");
  81.         buf.append(toSal).append(", ");
  82.         buf.append(deptno).append("]");
  83.         return buf.toString();
  84.     }
  85. }

EmployeeSimpleDto.java

  1. package examples.dto;
  2. import examples.entity.Employee;
  3. public class EmployeeSimpleDto extends Employee {
  4.     
  5.     private static final long serialVersionUID = 1L;
  6.     private String orderBy;
  7.     
  8.     public String getOrderBy() {
  9.         return orderBy;
  10.     }
  11.     public void setOrderBy(String orderBy) {
  12.         this.orderBy = orderBy;
  13.     }
  14. }

Department.java

  1. package examples.entity;
  2. import java.io.Serializable;
  3. import java.util.Set;
  4. public class Department implements Serializable {
  5.     
  6.     private static final long serialVersionUID = 1L;
  7.     private int deptno;
  8.     private String dname;
  9.     private String loc;
  10.     private Set<Employee> employee ;
  11.     
  12.     public Department() {
  13.     }
  14.     public int getDeptno() {
  15.         return this.deptno;
  16.     }
  17.     public void setDeptno(int deptno) {
  18.         this.deptno = deptno;
  19.     }
  20.     public java.lang.String getDname() {
  21.         return this.dname;
  22.     }
  23.     public void setDname(java.lang.String dname) {
  24.         this.dname = dname;
  25.     }
  26.     public java.lang.String getLoc() {
  27.         return this.loc;
  28.     }
  29.     public void setLoc(java.lang.String loc) {
  30.         this.loc = loc;
  31.     }
  32.     public Set<Employee> getEmployee() {
  33.         return employee;
  34.     }
  35.     public void setEmployee(Set<Employee> employee) {
  36.         this.employee = employee;
  37.     }
  38.     public boolean equals(Object other) {
  39.         if ( !(other instanceof Department) ) return false;
  40.         Department castOther = (Department) other;
  41.         return this.getDeptno() == castOther.getDeptno();
  42.     }
  43.     public String toString() {
  44.         StringBuffer buf = new StringBuffer();
  45.         buf.append("/n").append(deptno).append(", ");
  46.         buf.append(dname).append(", ");
  47.         buf.append(loc).append(",/n");
  48.         buf.append(employee);
  49.         return buf.toString();
  50.     }
  51.     public int hashCode() {
  52.         return (intthis.getDeptno();
  53.     }
  54. }

Employee.java

  1. package examples.entity;
  2. import java.io.Serializable;
  3. import java.math.BigDecimal;
  4. public class Employee implements Serializable {
  5.     
  6.     private static final long serialVersionUID = 1L;
  7.     private Integer empno;
  8.     private String ename;
  9.     private String job;
  10.     private Short mgr;
  11.     private java.util.Date hiredate;
  12.     private BigDecimal sal;
  13.     private Float comm;
  14.     private Integer deptno;
  15.     public Employee(Integer empno, java.lang.String ename, java.lang.String job, Short mgr, java.util.Date hiredate, BigDecimal sal, Float comm, Integer deptno) {
  16.         this.empno = empno;
  17.         this.ename = ename;
  18.         this.job = job;
  19.         this.mgr = mgr;
  20.         this.hiredate = hiredate;
  21.         this.sal = sal;
  22.         this.comm = comm;
  23.         this.deptno = deptno;
  24.     }
  25.     public Employee() {
  26.     }
  27.     public Employee(Integer empno) {
  28.         this.empno = empno;
  29.     }
  30.     
  31.     public Integer getEmpno() {
  32.         return this.empno;
  33.     }
  34.     public void setEmpno(Integer empno) {
  35.         this.empno = empno;
  36.     }
  37.     public java.lang.String getEname() {
  38.         return this.ename;
  39.     }
  40.     public void setEname(java.lang.String ename) {
  41.         this.ename = ename;
  42.     }
  43.     public java.lang.String getJob() {
  44.         return this.job;
  45.     }
  46.     public void setJob(java.lang.String job) {
  47.         this.job = job;
  48.     }
  49.     public Short getMgr() {
  50.         return this.mgr;
  51.     }
  52.     public void setMgr(Short mgr) {
  53.         this.mgr = mgr;
  54.     }
  55.     public java.util.Date getHiredate() {
  56.         return this.hiredate;
  57.     }
  58.     public void setHiredate(java.util.Date hiredate) {
  59.         this.hiredate = hiredate;
  60.     }
  61.     public BigDecimal getSal() {
  62.         return this.sal;
  63.     }
  64.     public void setSal(BigDecimal sal) {
  65.         this.sal = sal;
  66.     }
  67.     public Float getComm() {
  68.         return this.comm;
  69.     }
  70.     public void setComm(Float comm) {
  71.         this.comm = comm;
  72.     }
  73.     public Integer getDeptno() {
  74.         return this.deptno;
  75.     }
  76.     public void setDeptno(Integer deptno) {
  77.         this.deptno = deptno;
  78.     }
  79.     public boolean equals(Object other) {
  80.         if ( !(other instanceof Employee) ) return false;
  81.         Employee castOther = (Employee) other;
  82.         return this.getEmpno() == castOther.getEmpno();
  83.     }
  84.     public int hashCode() {
  85.         return this.getEmpno().intValue();
  86.     }
  87.     
  88.     public String toString() {
  89.         StringBuffer buf = new StringBuffer();
  90.         buf.append("[");
  91.         buf.append(deptno).append(", ");
  92.         buf.append(empno).append(", ");
  93.         buf.append(ename).append(", ");
  94.         buf.append(job).append(", ");
  95.         buf.append(mgr).append(", ");
  96.         buf.append(hiredate).append(", ");
  97.         buf.append(sal).append(", ");
  98.         buf.append(comm).append(", ");
  99.         buf.append(deptno).append("]/n");
  100.         
  101.         return buf.toString();
  102.     }
  103. }

Department.hbm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC 
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5.     
  6. <hibernate-mapping >
  7.     <class name="examples.entity.Department" table="DEPT" >
  8.     
  9.         <id name="deptno" type="int" >
  10.             <generator class="assigned"/>
  11.         </id>
  12.         <property name="dname" type="string" />
  13.         <property name="loc" type="string" />
  14.         <set name="employee" lazy="false" > 
  15.               <key column="DEPTNO" />
  16.               <one-to-many class="examples.entity.Employee" />
  17.         </set>
  18.         
  19.     </class>
  20.     
  21. </hibernate-mapping>

Employee.hbm.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC 
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  5.     
  6. <hibernate-mapping>
  7.     <class name="examples.entity.Employee" table="EMP">
  8.     
  9.         <id name="empno" column="EMPNO" type="integer">
  10.             <generator class="assigned"/>
  11.         </id>
  12.         <property name="ename" column="ENAME" type="string" length="10"/>
  13.         <property name="job" column="JOB" type="string" length="9"/>
  14.         <property name="mgr" column="MGR" type="short" length="4"/>
  15.         <property name="hiredate" column="HIREDATE" type="timestamp"/>
  16.         <property name="sal" column="SAL" type="big_decimal" length="7"/>
  17.         <property name="comm" column="COMM" type="float" length="7"/>
  18.         <property name="deptno" column="DEPTNO" type="int" length="2"/>
  19.         
  20.     </class>
  21.     
  22.     <query name="examples.dao.EmployeeAutoDao_getEmployeeByJob"><![CDATA[
  23.         from Employee emp 
  24.             where emp.job = :job
  25.             order by emp.empno desc
  26.     ]]></query>
  27.     
  28.     <query name="examples.dao.EmployeeAutoDao_getSQLEmployeeNameById"><![CDATA[
  29.         select emp.ename from Employee emp where emp.empno = :employeeId
  30.     ]]></query>
  31.     <query name="getSQLEmployeeIdByName"><![CDATA[
  32.         select emp.empno from Employee emp where emp.ename = :employeeName
  33.     ]]></query>
  34.     
  35.     <query name="getEmployeeBySalDto"><![CDATA[
  36.         from Employee emp where emp.sal > :fromSal and emp.sal < :toSal
  37.     ]]></query>
  38.     
  39. </hibernate-mapping>

测试代码:

DepartmentAutoDaoClient.java

  1. package examples.work;
  2. import org.seasar.framework.container.S2Container;
  3. import org.seasar.framework.container.factory.S2ContainerFactory;
  4. import examples.dao.DepartmentAutoDao;
  5. import examples.entity.Department;
  6. public class DepartmentAutoDaoClient {
  7.     private static final String PATH = "app.dicon";
  8.     public static void main(String[] args) {
  9.         
  10.         S2Container container = S2ContainerFactory.create(PATH);
  11.         container.init();
  12.         try {
  13.             DepartmentAutoDao dao = (DepartmentAutoDao) container.getComponent(DepartmentAutoDao.class);
  14.             Department dept = dao.getDepartmentByDeptno((short)30);
  15.             System.out.println(dept);
  16. //          List list = dao.findAll();
  17. //          System.out.println(list);
  18.             
  19.         } catch(Exception e){
  20.             e.printStackTrace();
  21.         } finally {
  22.             container.destroy();
  23.         }
  24.     }
  25. }

EmployeeAutoDaoClient.java

  1. package examples.work;
  2. import org.seasar.framework.container.S2Container;
  3. import org.seasar.framework.container.factory.S2ContainerFactory;
  4. import examples.dao.EmployeeAutoDao;
  5. import examples.entity.Employee;
  6. public class EmployeeAutoDaoClient {
  7.     private static final String PATH = "app.dicon";
  8.     public static void main(String[] args) {
  9.         
  10.         S2Container container = S2ContainerFactory.create(PATH);
  11.         container.init();
  12.         try {
  13.             EmployeeAutoDao dao = (EmployeeAutoDao) container.getComponent(EmployeeAutoDao.class);
  14.             Employee emp = new Employee();
  15.             emp.setEmpno(new Integer(9999));
  16.             emp.setEname("SCOTT");
  17.             emp.setDeptno(new Integer(10));
  18.             dao.save(emp);      
  19.             
  20.             emp.setEname("SYSTEM");
  21.             dao.update(emp);
  22.             
  23.             emp = dao.getEmployeeByEmpNo(new Integer(9999));
  24.             System.out.println(emp.getEname());
  25.             
  26.             dao.delete(emp);    
  27.         } catch(Exception e) {
  28.             e.printStackTrace();
  29.         } finally {
  30.             container.destroy();
  31.         }
  32.     }
  33. }

EmployeeAutoDaoSimpleDtoClient.java

  1. package examples.work;
  2. import java.util.List;
  3. import org.seasar.framework.container.S2Container;
  4. import org.seasar.framework.container.factory.S2ContainerFactory;
  5. import examples.dao.EmployeeAutoDao;
  6. import examples.entity.Employee;
  7. public class EmployeeAutoDaoSimpleDtoClient {
  8.     private static final String PATH = "app.dicon";
  9.     public static void main(String[] args) {
  10.         
  11.         S2Container container = S2ContainerFactory.create(PATH);
  12.         container.init();
  13.         try {
  14.             EmployeeAutoDao dao = (EmployeeAutoDao) container.getComponent(EmployeeAutoDao.class);
  15.             Employee emp = new Employee();
  16.             emp.setJob( "MANAGER"   );
  17.             emp.setDeptno( new Integer(20)   );
  18.             List<?> ret = dao.getEmployeeByEmployeeDtoAuto(emp);
  19.             System.out.println("RET:" + ((Employee)ret.get(0)).getEname());
  20.         } finally {
  21.             container.destroy();
  22.         }
  23.     }
  24. }

EmployeeClient.java

  1. package examples.work;
  2. import org.seasar.framework.container.S2Container;
  3. import org.seasar.framework.container.factory.S2ContainerFactory;
  4. import examples.dao.EmployeeDao;
  5. public class EmployeeClient {
  6.     private static final String PATH = "app.dicon";
  7.     
  8.     public static void main(String[] args) {
  9.         
  10.         S2Container container = S2ContainerFactory.create(PATH);
  11.         container.init();
  12.         try {
  13.             EmployeeDao dao = (EmployeeDao) container.getComponent(EmployeeDao.class);
  14.             System.out.println(dao.getEmployee(7900).getEname());
  15.             
  16. //          Employee employee = new Employee();
  17. //          employee.setEmpno(new Integer(7788));
  18. //          employee.setEname("SCOTT");
  19. //          dao.save(employee);
  20.             
  21.         } catch(Exception e) {
  22.             e.printStackTrace();
  23.         } finally {
  24.             container.destroy();
  25.         }
  26.     }
  27. }
原创粉丝点击