首先配置 dataSource 数据源
<bean id="mydataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
<property name="url" value="jdbc:mysql://localhost:3306/ygh"/>
<property name="maxIdle" value="3"/>
<property name="minIdle" value="2"/>
</bean>
再配置sessionFactory
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="mydataSource"/>
<property name="mappingResources">
<list>
<value>com/javalong/spring/day02/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
<property name="dataSource" ref="mydataSource"/>就是把刚才配置的dataSource传入。
需要引入hibernate3.jar dom4j.jar jta.jar 3个包。
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
我使用的是mysql数据库,所以用mysql方言。
配置好sessionFactory后还需要传入有dao操作的类中。
比如我的
public class UserHibernateImpl extends HibernateDaoSupport implements UserDao{
@Override
public void insert(User user) {
this.getHibernateTemplate().save(user);
}
}
首先要继承HibernateDaoSupport,需要注入sessionFactory,可以使用getHibernateTemplate().获取hbernateTemplate后进行简单的操作。
Xml配置
<bean id="userHibernateImpl" class="com.javalong.spring.day02.UserHibernateImpl">
<property name="sessionFactory" ref="mySessionFactory"></property>
</bean>
简单的注入sessionFactory就可以了
代码:
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao=(UserDao)context.getBean("userHibernateImpl");
User user=new User();
user.setEmail("840727854@qq.com");
user.setPassword("123456");
user.setPhone("1234567");
user.setUsername("ygh");
userDao.insert(user);
输出:
记录前~~~~~~~~~~~~
Hibernate:
insert
into
ygh.t_user
(username, password, email, phone)
values
(?, ?, ?, ?)
记录后~~~~~~~~~~~~
因为我配置了aop环绕通知所以有
记录前~~~~~~~~~~~~
记录后~~~~~~~~~~~~
Aop配置:
<aop:config>
<aop:pointcut expression="within (com..*))" id="testpointcut"/>
<aop:aspect id="testaspect" ref="loggerUtil">
<aop:around method="log" pointcut-ref="testpointcut"/>
</aop:aspect>
</aop:config>