jar包,就把hibernate、spring、c3p0的所有的jar包都导入,否则可能会报某些类找不到。
spring配置文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"> </property> <property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:ORCL"></property> <property name="user" value="HIBERNATE" /> <property name="password" value="HIBERNATE" /> <property name="minPoolSize" value="10" /> <property name="maxPoolSize" value="100" /> <property name="maxIdleTime" value="1800" /> <property name="acquireIncrement" value="3" /> <property name="maxStatements" value="1000" /> <property name="initialPoolSize" value="10" /> <property name="idleConnectionTestPeriod" value="60" /> <property name="acquireRetryAttempts" value="30" /> <property name="breakAfterAcquireFailure" value="true" /> <property name="testConnectionOnCheckout" value="false" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="mappingResources"> <value>com/animal/pojo/Animal.hbm.xml</value> </property> </bean> <bean id="animalDao" class="com.animal.dao.AnimalDaoImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> </beans>
CREATE TABLE TB_ANIMAL ( ID INTEGER PRIMARY KEY, NAME VARCHAR2(20) NOT NULL );
CREATE SEQUENCE SQ_ANIMAL INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE CACHE 10;
package com.animal.pojo; public class Animal { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.animal.pojo"> <class name="Animal" table="tb_animal"> <id name="id" column="id" type="integer"> <generator class="sequence"> <param name="sequence">SQ_ANIMAL</param> </generator> </id> <property name="name" column="name" type="string" /> </class> <query name="getAnimalById"> from Animal where id=? </query> <sql-query name="getAnimalByName"> select * from tb_animal where name=? </sql-query> </hibernate-mapping>
dao:
package com.animal.dao; import com.animal.pojo.Animal; public interface AnimalDao { public void save(Animal animal); public Animal selectById(int id); }
package com.animal.dao; import java.util.List; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.animal.pojo.Animal; public class AnimalDaoImpl extends HibernateDaoSupport implements AnimalDao { @Override public void save(Animal animal) { this.getHibernateTemplate().save(animal); } @Override public Animal selectById(int id) { DetachedCriteria criteria = DetachedCriteria.forClass(Animal.class); criteria.add(Restrictions.eq("id", id)); List<Animal> animalList = this.getHibernateTemplate().findByCriteria(criteria); if (animalList == null) { return null; } return animalList.get(0); } }
package com.animal.test; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.animal.dao.AnimalDao; import com.animal.pojo.Animal; import junit.framework.TestCase; public class TestHibernateSpring extends TestCase { private static final BeanFactory factory = new ClassPathXmlApplicationContext("appcontext.xml"); public void testSave() { AnimalDao animalDao = (AnimalDao)factory.getBean("animalDao"); Animal animal = new Animal(); animal.setName("animal_sh"); animalDao.save(animal); } public void testSelectById() { AnimalDao animalDao = (AnimalDao)factory.getBean("animalDao"); Animal animal = animalDao.selectById(50003); System.out.println(animal.getName()); } }
SQL> SELECT * FROM TB_ANIMAL; ID NAME ---------- -------------------- 50003 animal_sh SQL>