关于Spring对hibernate进行数据操作的问题

用回调方式操作数据
return (T)this.getHibernateTemplate().execute(
new HibernateCallback() {
public T doInHibernate(org.hibernate.Session session){
session.update(entity);
return (T)entity;
}
});

直接调用继承的方法操作数据

super.getHibernateTemplate.update(entity);
return (T)entity;

结果有什么区别么,用途有什么不一样么,getHibernateTemplate是属于update 和org.hibernate.session 的update 有差异么.

新人,之前都是用父类的update方法直接操作,对于这种稍繁琐的回调方式不是很理解

2个回答

完全没必要,只有当template提供的方法不满足要求时才去使用
可参考
[url]http://jinnianshilongnian.iteye.com/blog/1685963[/url]

u011129030
Smile丶 我刚进公司,学习中,看到这种操作方式很费解,不明白为什么要这么做,又不好意思问,谢谢你的回答,而且你空间里面的东西很不错,收藏了
6 年多之前 回复

如果只是做update操作,使用getHibernateTemplate.update(entity);完全可以达到目的。但是当你自己写sql语句时getHibernateTemplate()里面封装的方法就不能满足你的要求,比如分页查询,比如跨表查询等等。这样你就需要在回调里面写相应的sql语句,而且在回调里面写的语句spring会帮你处理session的

u011129030
Smile丶 谢谢你的回答,你回答的更详细,但是已经选完答案了,不好意思了
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
spring+hibernate配置多数据源动态切换,java实体如何和各个数据库实例映射?
我的一个javaweb项目,需要用到多个数据源,都是oracle实例,我用spring配置了数据源的动态切换。使用AOP在service层做拦截,然后用注解DataSource来标示所要选择的数据源。现在我有一个问题,就是我用数据库操作时,hibernate是面向对象的,我该如何将不同的java实体映射到不同的数据源上(不同数据库表结构不同)。比如一个product包中的java实体映射到数据库1,cart包中的实体映射到数据库2。如何做到呢?
spring 和hibernate怎样操作blob字段
现在又一个应用场景,前台数据操作数据我以HashMap保存起来然后存入数据库中的blob字段,现在怎样在把它取出来放到一个map中 [b]问题补充:[/b] 请问有没有spring结合hibernate操作的 ,看了一些网上的配置都有错误,多谢大侠们的解答
spring+hibernate操作数据库,可以查询数据,但是不能添加数据
![图片说明](https://img-ask.csdn.net/upload/201704/20/1492676808_116734.jpg)![图片说明](https://img-ask.csdn.net/upload/201704/20/1492676698_458828.jpg)! 2017-04-20 14:10:46,066 [main] DEBUG [org.hibernate.engine.spi.ActionQueue] - Executing identity-insert immediately 2017-04-20 14:10:46,080 [main] DEBUG [org.hibernate.SQL] - insert into t_user2 (password, user_name) values (?, ?) Hibernate: insert into t_user2 (password, user_name) values (?, ?) 2017-04-20 14:10:46,121 [main] DEBUG [org.hibernate.resource.jdbc.internal.ResourceRegistryStandardImpl] - HHH000387: ResultSet's statement was not registered 2017-04-20 14:10:46,124 [main] DEBUG [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - could not insert: [com.lk.domain.User] [insert into t_user2 (password, user_name) values (?, ?)] java.sql.SQLException: Invalid value for getInt() - '��
hibernate 和spring整合来 操作双数据库 的问题
请教下: 项目需求是:定时进行下面操作 (1) 从A数据库中读取数据后进行业务处理后存入 B数据库(两数据库表结构不一致) (2) 检查数据库A中某几个表数据是否有变动,如有变动更新到数据库B中。 小弟想用hibernate和Spring完成,Spring中有定时任务所以定时可以解决。 令小弟不解的是hibernate能否完成上面的需求,应该怎么实现?
Spring 集成 Hibernate事务问题
Spring 集成 Hibernate事务问题 今天碰上了个问题, 在Spring 集成 Hibernate事务时我记得事务传播属性为PROPAGATION_REQUIRED时产生内部异常时事务会回滚,但今天我在做实验时在被事务管理的方法中进行了数据库操作后强行抛出Exception异常, 但异常并没有使事务回滚,起初我以为是配置的问题,但在事务传播属性里加入-Exception,事务传播属性定义改为以下的样子: <property name="transactionAttributes"> <props> <prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop> </props> </property> 再运行程序事务可以回滚,我想问事物传播属性的缺省定义PROPAGATION_REQUIRED会不会产生事务回滚? 如果能产生回滚哪些异常会使事务回滚? 请朋友们指点一下.
关于spring事务管理的两个疑问
什么是事务管理?我认为事务管理就是将多个对数据库的操作放在同一个事务里然后提交。 <br/> ssh框架,hibernate 的template 中的save等等方法是有使用事务提交的。但是为什么要在xml里配置事务管理器?我认为,服务层可能使用多个dao,该事务管理器的作用是将服务层使用的多个dao对应的多个修改数据库操作放在同一个事务里。<br/> 两个疑问
应用spring aop遇到的hibernate问题
系统应用spring aop来记录数据的修改记录,也就是记录系统的update操作。 需要记录操作前和操作后的变化 newEntity和oldEntity 我的做法是写了一个拦截器 如下: [code="java"] public class LogAdvice implements MethodBeforeAdvice { public void before(Method method, Object[] args, Object target) throws Throwable { } [/code] 方法中的第二个参数就是在update操作前的数据,也就是newEntity,那么此时我还需要从数据库中取得oldEntity, 问题就出在这里,因为系统配置了延迟加载,openSessionInView,所以在request还没有完成之前,还是同一个session范围内,那我要用newEntity的id取数据的话,hibernate首先是从session缓存中取,此时session缓存中正好有一个newEntity,所以取到的数据其实还是newEntity,无法取到数据库中的值。 这个问题不知道哪位大虾遇到过或是有什么好的解决办法吗?
spring+hibernate(一对多)向数据库添加数据
有两个问题: [b][color=red][size=large]1、spring和hibernate中的一对多问题(包括添加、删除和更行)~我现在这么写代码规范吗? 2、总感觉项目里加了spring之后,处理事务的速度变得慢了很多~比只是加入hibernate的时候慢~这是神马原因呢?[/size][/color][/b] 数据库有两个表:“user”和“order”;一个“user”对应多个“order”;user表的外键关联在“order”表中 具体的Dao借口都继承了泛型的Dao(泛型Dao里面有spring的数据操作) 现在我想在“order”里面添加数据~测试结果现在添加失败~但没有Exception;以下是我的代码,问题应该就在[color=red][size=large]“OrderServiceImpl”[/size][/color]中; (Spring:ApplicationContext.xml) [code="java"] 1. <!-- <Tables> --> 2. <bean id="Users" class="com.beans.properties.User"></bean> 3. <bean id="Order" class="com.beans.properties.Order"></bean> 4. <!-- </Tables> --> 5. 6. <!-- <GenericDao> --> 7. <bean id="GenericDao" class="com.dao.GenericDaoImpl.GenericHibernateDaoImpl"> 8. <property name="sessionFactory"> 9. <ref bean="sessionFactory" /> 10. </property> 11. </bean> 12. <!-- </GenericDao> --> 13. 14. <!-- <Dao> --> 15. <bean id="UserDao" class="com.hibernate.daoImpl.UserDaoImpl"> 16. <property name="sessionFactory"> 17. <ref bean="sessionFactory" /> 18. </property> 19. </bean> 20. <bean id="OrderDao" class="com.hibernate.daoImpl.OrderDaoImpl"> 21. <property name="sessionFactory"> 22. <ref bean="sessionFactory" /> 23. </property> 24. </bean> 25. <!-- </Dao> --> 26. 27. <!-- <Service> --> 28. <bean id="UserService" class="com.hibernate.ServiceImpl.UserServiceImpl"> 29. <property name="dao"> 30. <ref bean="UserDao" /> 31. </property> 32. </bean> 33. 34. <bean id="OrderService" class="com.hibernate.ServiceImpl.OrderServiceImpl"> 35. <property name="orderDao"> 36. <ref bean="OrderDao" /> 37. </property> 38. <property name="userDao"> 39. <ref bean="UserDao" /> 40. </property> 41. <property name="userService"> 42. <ref bean="UserService" /> 43. </property> 44. </bean> 45. <!-- </Service> --> [/code] User.hbm.xml [code="java"] 1. <class name="com.beans.properties.User" table="user" catalog="test"> 2. <id name="userId" type="java.lang.Integer"> 3. <column name="userID" /> 4. <generator class="native" /> 5. </id> 6. <property name="userName" type="java.lang.String"> 7. <column name="userName" length="10" not-null="true" /> 8. </property> 9. <set name="orders" inverse="true" cascade="all"> 10. <key> 11. <column name="o_uID" /> 12. </key> 13. <one-to-many class="com.beans.properties.Order" /> 14. </set> 15. </class> [/code] Order.hbm.xml [code="java"] 1. <class name="com.beans.properties.Order" table="order" catalog="test"> 2. <id name="orderId" type="java.lang.Integer"> 3. <column name="orderID" /> 4. <generator class="native" /> 5. </id> 6. <many-to-one name="user" class="com.beans.properties.User" fetch="select"> 7. <column name="o_uID" /> 8. </many-to-one> 9. <property name="orderStatue" type="java.lang.Integer"> 10. <column name="order_statue" not-null="true" /> 11. </property> 12. <property name="orderName" type="java.lang.String"> 13. <column name="orderName" length="10" /> 14. </property> 15. <property name="version" type="java.lang.Integer"> 16. <column name="version" not-null="true" /> 17. </property> 18. </class> [/code] OrderDaoImpl(向数据库底层添加数据) [code="java"] public class OrderDaoImpl extends GenericHibernateDaoImpl<Order,Integer> implements OrderDao { boolean success =false; public boolean addOrder(Order order) { success=saveObj(order); System.out.println("save order"); return success; } [/code] [b][color=red]OrderServiceImpl(这层和用户沟通~问题出现在这代码当中:第16~19行)[/color][/b] [code="java"] 1. public boolean addOrder(String orderName, Integer orderStatue, 2. String userName,Integer version) { 3. ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); 4. Order order = (Order)ctx.getBean("Order"); 5. userService = (UserService) ctx.getBean("UserService"); 6. orderDao=(OrderDao)ctx.getBean("OrderDao"); 7. 8. boolean success = false; 9. 10. Integer userId = userService.findUserId(userName);//get a UserID by userName 11. User user = userService.findUser(userId);//get an User by UserID 12. 13. order.setOrderName(orderName); 14. order.setOrderStatue(orderStatue); 15. order.setVersion(version); 16. order.setUser(user);//set an "user" into the order; 17. 18. try { 19. success=orderDao.addOrder(order);//保存“order”结果提示返回的“success”值为“false”,应该怎么办好呢? 20. } catch (Exception e) { 21. success = false; 22. e.printStackTrace(); 23. } 24. 25. return success; 26. } [/code] 如果单单用sql语句是可以插入的~但是我想用hibernate的特性把参数值set进去~thanks
spring管理hibernate,请问如何保证所有操作是一个事务内完成的?具体如下:
transactionTemplate.execute(new TransactionCallbackWithoutResult(){ protected void doInTransactionWithoutResult(TransactionStatus transactionStatus){ Session session = null; Transaction tx = null; try{ session = getSessionFactory().openSession(); tx = session.beginTransaction(); 方法1(); 方法2(); 方法3(); update(object); tx.commit(); }catch(Exception e){ e.printStackTrace(); if(tx != null){ tx.rollback(); } }finally{ if(session != null){ if(session.isOpen()){ session.close(); } } } } spring管理hibernate的,请问为什么方法2或方法3出错了,方法1或(方法1+方法2)的操作怎么才不会提交到数据库(即方法1、2、3全部没报错才一次性提交所有操作)?
hibernate 与数据库触发器的问题
今天碰到个jpa(hibernate) 与数据库触发器共存的问题。 有两张表A 和B,在表A上写了个触发器,当对A表某列进行update操作的时候,触发更新B的某条记录,但是hibernate 报如下错误: "Batch update returned unexpected row count from update; actual row count: 2; expected: 1". hibernate执行update操作时,返回值是受影响的记录数,因为有触发器的存在,每次对a表进行更新操作时,返回的记录数和hibernate 缓存中记录的记录数不一致,在网上查了下 在sql server中可以在触发器中设置 SET NOCOUNT ON ,不返回触发器操作的记录数 http://blog.csdn.net/eiwing/article/details/7722002 但我用的数据库是DB2 ,请问 SET NOCOUNT ON 在db2中对应的语句是什么?或者有没有其他解决方法
关于hibernate删除数据时出现的异常问题!
各位大侠。小弟最近做个应用,我在页面进行数据删除的时候出了一些问题,希望各位帮忙看看! 具体情况:我的应用是基于struts2+spring2.5+hibernate3.2.我的数据库表是通过hibernate生成的,在映射文件上做了相关的关联映射。一个目录表(category),一个文章表(article)。一个目录对应多个文章。我在页面上测试删除目录的时候发现我删除那些还未发布文章的目录可以删除成功,删除已经有文章的目录不成功(意料之内)。奇怪的地方出来了,当我先删除有文章的目录不成功后再去删除无文章的目录便出现了异常,导致不能成功删除。然后我重启tomcat,直接先删除无文章的目录。顺利删除。但只要我先删除已有文章的目录出现异常后再去删除无文章的目录就删除不成功。我想有一个可能解决方案就是对删除关联数据进行一下外键依赖处理。应该就不会出现这种情况。但是我想这应该不是最好的解决办法,因为我发现在第一次出现异常后再进行删除操作时hibernate的session值取不到了。我用的是sessionFactory session 删除方法:session.getCurrentSession().delete(session.getCurrentSession().get(category.class,id)); 可能有描述得不清晰的地方,希望各位能看看!谢谢!
spring hibernate struts2整合出现空指针异常
本人菜鸟大学生一枚,跪求高手指教,不甚感激, 我在spring hibernate整合后测试没有问题,可以实现对数据库的操作,然后我整合struts,同样的在action中调用业务方法,查询数据库所有的时候,出现空指针异常
spring + hibernate aop的问题
小弟刚刚学spring aop 遇到下面郁闷的问题 @Service @Transactional(readOnly = true) public class ManagerService { @Autowired private ManagerDao managerDao; @Transactional(readOnly = false) public Integer saveManager(String name) { Manager manager = new Manager(); manager.setName(name); return managerDao.save(manager); } @Transactional(readOnly = false) public Manager updateManager(Integer id, String name) { Manager manager = managerDao.get(id); manager.setName(name); return managerDao.update(manager); } public Manager get(Integer id) { return managerDao.get(id); } } @Service @Transactional(readOnly = true) public class LogService { @Autowired private LogDao logDao; @Transactional(readOnly = false) public Integer save(String signature, String clazz, String exceptionClass) { Log log = new Log(); log.setClazz(clazz); log.setExceptionClass(exceptionClass); log.setSignature(signature); return logDao.save(log); } } @Aspect @Component public class ManagerServiceAOP { @Autowired private LogService logService; private String signature; private String clazz; private String exceptionClass; @Pointcut("execution(* org.yefei.app.service.*.*(..)) && !execution(* org.yefei.app.service.LogService.*(..))") public void execute() { } @After("execute()") public void after(JoinPoint jp) { signature = jp.getSignature().toShortString(); clazz = jp.getTarget().toString(); exceptionClass = "没有异常抛出"; logService.save(signature, clazz, exceptionClass); } @AfterThrowing(pointcut = "execute()", throwing = "ex") public void afterThrowing(JoinPoint jp, Throwable ex) { logService.save(jp.getSignature().toShortString(), jp.getTarget() .toString(), ex.getClass().toString()); } } 在我执行下面代码时 @Test public void testUpdateManager() { managerService.updateManager(1, "张三"); } 发现aop类中的logService在执行后在控制台中有打印插入语句,但是数据库中却没有插入,不知道为什么。其他的插入操作都是可以执行的 上面的代码会抛异常,NullException,应该是对应aop中afterThrowing
Spring+Hibernate如何配置多个数据库?
主要是配置文件上,希望能给两个数据库分别建立表所对应的实体,具体应该怎么操作,最好能给个demo,拜托大神回答。。
hibernate中执行原生SQL进行插入操作不起作用,sql在数据库中能正常执行
hibernate中执行原生SQL进行插入操作createSQLQuery(sql).executeUpdate,不起作用,sql在数据库中能正常执行,事务是使用spring配置文件做的,类中有@Transactional注解,各位前辈是否遇到过同样问题,望指教!
请教Spring对于Hibernate的Session管理
问题: <br />假设我有一个daoA 对象, daoB对象,两个DAO类都是继承自HibernateDaoSupport类,两个对象在ServiceC类里被放在同一个事物里执行DAO中有的方法。比如说daoA.save(),daoB.delete()。 <br />在以上的情况下是不是Spring会提供两个sesssion来分别执行save和delete。 <br />如果我从dao取出的对象被传播到JSP上,并且这个对象配置了有lazy load,是不是会引起异常,为什么。 <br /> <br />另外,假设我配置了openSessionInViewFilter,从数据库中取出的对象可以在JSP上做LAZY LOAD,那这种方式和我在 Service中直接做initialize的优缺点分别是什么? <br /> <br />================================================= <br /> <br />我自己回答一下。 <br />刚刚看了Spring的源代码,它的strategy是这样的,当你调用HibernateTempalte.save()的时候,spring会检查你的config,看是否允许强制enforceNewSession,或者enforceNativeSession,通过这两个不同的策略。spring决定是否是强制创建和当前thread绑定的一个hibernate session,或者只在当前环境下查找一个已经有的session。 <br />如果选择了enForceNewSession,那就意味着HibernateTemplate的每一个操作都会是立刻打开session,但是注意,我没看到关闭session。也就是说,上面的问题会有2个session出现。
hibernate的缓存机制的如何设置的问题?
碰到这样一个业务场景,从hibernate中取出一个类,然后更改了这个类的某些字段,然后执行了另外一个数据库操作,结果hibernate会把改变过的那个类一起保存到数据库了。怀疑是hibernate数据库的缓存里持久化了这个类,在执行其他数据库操作的时候一起提交了改变。但是奇怪的是业务类里面只有两个类有这种情况,其他类却没有出现这种情况,让人非常困惑。是不是spring或者hibernate的配置会影响到这种情况?
spring+hibernate+atomikos 实现JTA分布式事务时自定义事务隔离级别无效
因为需要对两个数据库同时操作并且放在同一个事务中,所以采用了atomikos去实现JTA分布式事务。数据库用的是SQL Server2014 . 现在的问题是,事务提交回滚,一切都正常,但是没有按照设定好的事务隔离级别给数据库表加锁。比如service中的save方法 设定的是SERIALIZABLE隔离级别,测试时查询数据库表隔离级别,并未按照预期加锁。 以下是配置文件,请大神给解惑一下。 ``` <?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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 修改 --> <!-- 1.扫描包 --> <!--context:component-scan base-package=""></context:component-scan--> <!--context:component-scan base-package="wms.*"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan--> <context:component-scan base-package="com.baoJian.wmsBasic.*.dao"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/> </context:component-scan> <context:component-scan base-package="com.baoJian.wmsBasic.*.service"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> </context:component-scan> <!-- 2.加载属性文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"></property> </bean> <!--develop开发环境配置,测试环境配置 对应web.xml中也有相关设置--> <!--beans profile="develop"> <context:property-placeholder location="classpath:jdbc.properties"/> </beans> <beans profile="product"> <context:property-placeholder location="classpath:jdbc_product.properties"/> </beans--> <beans> <!-- 修改 --> <!-- 3.配置数据库连接池 更改为JTA--> <bean class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close" id="dataSource"> <!-- Set unique name for this DataSource --> <property name="uniqueResourceName"><value>dataSource_main</value></property> <!-- Set XADatasource class name --> <property name="xaDataSourceClassName" value="com.microsoft.sqlserver.jdbc.SQLServerXADataSource" /> <property name="xaProperties"> <props> <prop key="URL">${jdbcUrl}</prop> </props> </property> <!-- set properties for datasource connection pool --> <property name="poolSize" value="3" /> <!-- timeout after 20000 seconds --> <property name="minPoolSize" value="3" /> <property name="maxPoolSize" value="6" /> <property name="borrowConnectionTimeout" value="60" /> <property name="reapTimeout"><value>300</value></property> <property name="loginTimeout" value="40" /> <property name="testQuery"> <value>select 1</value> </property> </bean> <bean class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close" id="dataSource_erp"> <!-- Set unique name for this DataSource --> <property name="uniqueResourceName"><value>dataSource_erp</value></property> <!-- Set XADatasource class name --> <property name="xaDataSourceClassName" value="oracle.jdbc.xa.client.OracleXADataSource" /> <property name="xaProperties"> <props> <!--prop key="URL">jdbc:oracle:thin:@erptest.baojian.com:1541:DEV2</prop--> <prop key="URL">${oraJdbcUrl}</prop> <prop key="user">${oraUser}</prop> <prop key="password">${oraPassword}</prop> </props> </property> <!-- set properties for datasource connection pool --> <property name="poolSize" value="3" /> <!-- timeout after 20000 seconds --> <property name="reapTimeout"><value>300</value></property> </bean> <!-- 修改 --> <!-- 4.Hibernate的相关信息 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> </bean> <bean id="sessionFactory_erp" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource_erp"></property> <property name="configLocation" value="classpath:hibernate_erp.cfg.xml"/> </bean> <!-- 分布式事务 --> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <property name="forceShutdown" value="true"/> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="50000"/> </bean> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager" ref="atomikosTransactionManager"/> <property name="userTransaction" ref="atomikosUserTransaction"/> <property name="allowCustomIsolationLevels" value="true"/> </bean> <!--<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> --> <!-- 6.开启事务注解 --> <!--tx:annotation-driven transaction-manager="transactionManager"/--> <tx:advice id="txAdvice" transaction-manager="transactionManager" > <tx:attributes> <!--init初始化操作 calculate计算类操作 save保存操作 remove删除操作 update更新操作--> <tx:method name="init*" propagation="REQUIRED" rollback-for="Exception"></tx:method> <tx:method name="calculate*" propagation="REQUIRED" rollback-for="Exception"></tx:method> <tx:method name="save*" propagation="REQUIRED" isolation="SERIALIZABLE" rollback-for="Exception"></tx:method> <tx:method name="*" read-only="true"></tx:method> </tx:attributes> </tx:advice> <!--定义哪些类的哪些方法参与事务 --> <aop:config> <!-- <aop:pointcut id="allManagerMethod" expression="execution(* com.baojian.demo.service.*.*(..))"/> --> <aop:pointcut id="allServiceMethod" expression="execution(* *..service.*.*(..))"/> <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice"/> </aop:config> </beans> ``` 测试例子 server中的一个方法 ``` public void saveTestHeader() throws InventoryServiceException, ReceiptServiceException { System.out.println("------------------TransactionSynchronizationManager"+TransactionSynchronizationManager.getCurrentTransactionIsolationLevel()); //查询并锁定 TestHeader testHeader = this.testDao.findOneByHQL("from TestHeader where id=160"); Thread.sleep(30000); } ```
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star!【Java学习 面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识。欢迎 Star!)。 另外推荐一篇原创:终极推荐!可能是最适合你的Java学习路线 方法 网站 书籍推荐! Java 并发基础常见面试题总结 1. 什么是线程和进程? 1.1. 何为进程? 进程是程...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
神经⽹络可以计算任何函数的可视化证明
《Neural Networks and Deep Learning》读书笔记第四篇本章其实和前面章节的关联性不大,所以大可将本章作为小短文来阅读,当然基本的深度学习基础还是要有的。主要介绍了神经⽹络拥有的⼀种普遍性,比如说不管目标函数是怎样的,神经网络总是能够对任何可能的输入,其值(或者说近似值)是网络的输出,哪怕是多输入和多输出也是如此,我们大可直接得出一个结论:不论我们想要计算什么样的函数,...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
活到老,学到老,程序员也该如此
全文共2763字,预计学习时长8分钟 图片来源:Pixabay 此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。 饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高...
Vue快速实现通用表单验证
本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单”。这句话要从哪里说起呢?大概要从最近半个月的“全栈工程师”说起。项目上需要做一个城市配载的功能,顾名思义,就是通过框选和拖拽的方式在地图上完成配载。博主选择了前后端分离的方式,在这个过程中发现:首先,只要有依赖jQuery的组件,譬如Kendoui,即使使用...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
关于裁员几点看法及建议
最近网易裁员事件引起广泛关注,昨天网易针对此事,也发了声明,到底谁对谁错,孰是孰非?我们作为吃瓜观众实在是知之甚少,所以不敢妄下定论。身处软件开发这个行业,近一两年来,对...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
相关热词 c# 数组类型 泛型约束 c#的赛狗日程序 c# 传递数组 可变参数 c# 生成存储过程 c# list 补集 c#获得所有窗体 c# 当前秒数转成年月日 c#中的枚举 c# 计算校验和 连续随机数不重复c#
立即提问