Spring配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- <bean id="hibernateTemplate" class="org.springframework.orm.hibernate4.HibernateTemplate">
<property name=""></property>
</bean> -->
<tx:advice id="advice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<:attributes>
<:advice>
<aop:config>
<aop:pointcut expression="execution ( * com.tmq.service.impl..*(..))" id="px"/>
<aop:advisor advice-ref="advice" pointcut-ref="px"/>
</aop:config>
<aop:config>
<aop:aspect id="sessionAdvice" ref="sessionAdvice">
<aop:around method="processSession" pointcut="execution(* com.tmq.dao.impl.*.*(..))"/>
</aop:aspect>
</aop:config>
<bean id="sessionAdvice" class="com.tmq.advice.SessionFactoryAdvice">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.connection.autoReconnect">true</prop>
<prop key="hibernate.connection.autoReconnectForPools">true</prop>
<prop key="hibernate.connection.characterEncoding">UTF-8</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/tmq/entity/User.hbm.xml<alue>
<st>
</property>
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<!-- 指定连接数据库的用户名 -->
<property name="username" value="test" />
<!-- 指定连接数据库的密码 -->
<property name="password" value="test" />
</bean>
<bean id="userService" class="com.tmq.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="com.tmq.dao.impl.UserDaoImpl">
</bean>
</beans>
实体类的hbm文件如下:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.tmq.entity">
<class name="User" table="usertable" mutable="true" dynamic-update="true">
<id name="userId" type="java.lang.Integer" column="USERID">
<generator class="sequence">
<param name="sequence">usertable_seq</param>
</generator>
</id>
<property name="userName" type="java.lang.String"> <column name="USERNAME" length="32" not-null="true"/> </property>
<property name="password" type="java.lang.String"> <column name="PASSWORD" length="32"/> </property>
</class>
</hibernate-mapping>
测试程序如下:
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("application.xml");
/*UserDao userDao=(UserDao) ac.getBean("userDao");
userDao.add(user, session)*/
User u1=new User();
u1.setUserName("aaaa");
u1.setPassword("123");
User u2=new User();
u2.setPassword("456");
UserService userService=(UserService) ac.getBean("userService");
userService.addUser(u1);
//userService.addUser(u2);
}
执行结果如下:Hibernate: select usertable_seq.nextval from dual
是Spring管理session,不需要hibernate自己开启事物提交
分享到:
相关推荐
- **查询操作**:使用Session的`createQuery()`方法来执行HQL(Hibernate Query Language)查询,或者通过`get()`方法来根据ID查询单个对象。 一个典型的插入和更新操作示例是: ```java // 获取Session实例 ...
使用 DISTINCT 选项时,对于所有重复的数据行在 SELECT 返回的结果集合中只保留一行。 5. 限制返回的行数 使用 TOP n [PERCENT]选项限制返回的数据行数,TOP n 说明返回 n 行,而 TOP n PERCENT 时,说明 n 是表示...
从提供的部分内容来看,文档包含了对Spring框架多个重要方面的考查,包括核心概念、设计模式、Spring模块以及其与其他Java技术如Struts、Hibernate的集成。 核心概念: - IoC(控制反转):通过容器管理对象的创建...
查询缓存能够存储查询结果,当相同的查询再次执行时,可以直接从缓存中获取结果,而不需要重新执行 SQL。但需要注意的是,由于可能存在并发问题和数据一致性问题,查询缓存的使用需谨慎。 通过以上内容,我们可以...
使用 DISTINCT 选项时,对于所有重复的数据行在 SELECT 返回的结果集合中只保留一行。 5、限制返回的行数 使用 TOP n [PERCENT]选项限制返回的数据行数,TOP n 说明返回 n 行,而 TOP n PERCENT 时,说明 n 是表示...
这样配置后,当执行以下代码时,Hibernate 不会立即加载所有 Address 数据,而是等到实际访问 `user.getAddresses()` 时才会触发查询: ```java User user = (User) session.load(User.class, 1); Collection...
使用 DISTINCT 选项时,对于所有重复的数据行在 SELECT 返回的结果集合中只保留一行。 5. 限制返回的行数 使用 TOP n [PERCENT]选项限制返回的数据行数,TOP n 说明返回 n 行,而 TOP n PERCENT 时,说明 n 是表示...
### 通用SQL数据库查询语句精华使用简介 在IT领域,SQL(Structured Query Language)作为标准的数据库查询语言,被广泛应用于数据管理与检索。掌握SQL的精华使用技巧,能够显著提升数据处理效率,实现对数据库的...
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5. 限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,...
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5. 限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,...
- 多表查询:`SELECT usertable.username, citytable.cityid FROM usertable, citytable WHERE usertable.cityid = citytable.cityid;` - 当从多个表中选择具有相同名称的列时,需要使用表名或别名来限定这些列,...
说明:该示例项目使用spring mvc,hibernate和mysql数据库进行插入,更新和删除。 Heroku链接将很快添加。 使用的技术: 后端:Spring 4.1.1,JDK 1.7,Maven 4.0.0,Hibernate 4.3.5; 前端:JQuery; IDE:...
这是在Hibernate的工具类中常用的模式,可以帮助管理session的生命周期,确保session在使用时是可用的。 当更新操作完成后,一般推荐关闭session,以释放资源。示例中使用HibernateUtil.closeSession()来关闭...
使用 DISTINCT 选项时,对于所有重复的数据行在 SELECT 返回的结果集合中只保留一行。 5. 限制返回的行数 使用 TOP n [PERCENT]选项限制返回的数据行数,TOP n 说明返回 n 行,而 TOP n PERCENT 时,说明 n 是表示...
2. `SELECT COUNT(*) FROM usergrade g WHERE NOT EXISTS (SELECT NULL FROM usertable t WHERE t.userid = g.userid AND t.username = g.username)` **解析:** - **语句一:**此语句将`usergrade`表中不在`...
- 示例:假设`usertable`和`citytable`中有共同的`cityid`列,则可以这样写:`SELECT username, citytable.cityid FROM usertable, citytable WHERE usertable.cityid = citytable.cityid;` - 表的别名:为了简化多...