jpa怎么使用(使用JPA的不同实现的配置)
本文目录
使用JPA的不同实现的配置
以前使用JPA的实现是toplink,现在改为hibernate,所以要修改persistence.xml文件,两者的配置有一些不一样,并且在EE环境下面和SE的环境下面也有不一样,还有一点,那就是当persistence.xml里面有些格式出错的时候,虽然出错的不是我们需要的那个单元,但也会使得整个persistence.xml报废。下面帖的是在SE的环境下面使用toplink和hibernate的实现,两者都写在同一个persistence.xml里面。这样切换起来也方便一些。?xml version="1.0" encoding="UTF-8"?persistence version="1.0" xmlns="/persistence" xmlns:xsi="/persistence persistence-unit name="TestSSH2PU" transaction-type="RESOURCE_LOCAL"provideroracle.toplink.essentials.PersistenceProvider/providerclasscom.hadeslee.jpaentity.Department/classclasscom.hadeslee.jpaentity.Person/classpropertiesproperty name="toplink.jdbc.user" value="sa"/property name="toplink.jdbc.password" value="hadeslee"/property name="toplink.jdbc.url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testSSH"/property name="toplink.jdbc.driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/property name="toplink.ddl-generation" value="create-tables"//properties/persistence-unitpersistence-unit name="TestSSH1PU2" transaction-type="RESOURCE_LOCAL"providerorg.hibernate.ejb.HibernatePersistence/providerclasscom.hadeslee.jpaentity.Department/classclasscom.hadeslee.jpaentity.Person/classpropertiesproperty name="hibernate.connection.driver_class" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/property name="hibernate.connection.url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testSSH"/propertyproperty name="hibernate.connection.username" value="sa"/propertyproperty name="hibernate.connection.password" value="hadeslee"/propertyproperty name="hibernate.show_sql" value="true"/propertyproperty name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/propertyproperty name="hibernate.current_session_context_class" value="thread"/property/properties/persistence-unit/persistence在SE的环境下面,是不能使用容器的JTA的数据源的。并且不能使用exclude-unlisted-classestrue/exclude-unlisted-classes这个属性。本文重点是记录下两个常用的JPA的实现的配置。目前是在SE环境下的配置。EE环境下面的配置如下:?xml version="1.0" encoding="UTF-8"?persistence version="1.0" xmlns="/persistence" xmlns:xsi="/persistence persistence-unit name="unit_mssql" transaction-type="JTA"provideroracle.toplink.essentials.PersistenceProvider/providerjta-data-sourceMobileOAMSSQL/jta-data-sourcepropertiesproperty name="toplink.ddl-generation" value="create-tables"/property name="toplink.logging.level" value="FINE"//properties/persistence-unitpersistence-unit name="MyApp-ejbPU2" transaction-type="JTA"providerorg.hibernate.ejb.HibernatePersistence/providerjta-data-sourceMobileOAMYSQL/jta-data-sourcepropertiesproperty name="hibernate.hbm2ddl.auto" value="update"/property name="hibernate.show_sql" value="true"//properties/persistence-unit/persistence在EE环境下面使用JPA配置就简单了许多,首先他可以把当前模块的CLASS文件都包括进来,不用手工指定。并且也少了很多有关于数据库连接的操作,因为这个时候都是从容器里面去取数据源的。并且此时的事务是由容器去管理的,也就是使用JTA,不再是RESOURCE_LOCAL了。这样在代码里面就不用em.getTransaction()。begin();和em.getTransaction()。commit()了,并且可以使用注入功能,把EntityManager注入到使用它的地方了。
jpa中怎样使用between
1、注解方式实现在方法或者类前面加上下面注解@Transactional(value="transactionManager", rollbackFor = Exception.class)11但是我不知道为什么,总是会出现不生效的情况。2、手动提交方式实现/** * JpaTransactionManager事务管理 . */@Resource(name = "transactionManager")JpaTransactionManager tm;//事务开始DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); def.setTimeout(30);//事务状态TransactionStatus status = tm.getTransaction(def); try { //此处写持久层逻辑 tm.commit(status);} catch (Exception e) { logger.error("出现异常,事务回滚", e) if(!status.isCompleted()){ tm.rollback(status); } throw new BusinessException("更新卡状态为制卡审批通过失败。");}
java中用jpa往数据库表中添加数据怎么实现
jpa是实现面向对象的数据持久化的一套标准api。要实现对象的持久化,需要首先建立java bean到关系数据库的映射关系(使用java注释或xml),然后新建/修改java bean实例后调用jpa相关的接口实现对象的持久化,相关的sql操作由jpa底层自动完成。具体参考jpa的文档。
springboot jpa自定义查询
jpa系列: springboot jpa使用 springboot jpa 关系注解和mappedBy springboot jpa自定义查询 以下语句均为hql 使用@Query来指定hql语句,则方法名随意,jpa将根据该注解进行查询;你也可使用sql语句,只需注解中添加参数 nativeQuery = true 即可,但不建议这样做,容易导致对象封装出错,也不利于跨平台。 关于hql,其语法基本雷同sql。不同之处基本在于: 1.hql中使用 类名 取代 表名 ,用 类名.类成员名 取代 表名.列名 。 如 from User 中的 User ,这里不是指表名,而是类名。也可加上包名如 com.example.User 。 2.hql类名建议不要省略。 自己测试时,hql直接用类成员 username 会报错,改为 user.username 就可以,与其它教程的似乎有出入,这里作建议。 3.hql没有 * 上面例子等价于sql: select t.* from user as t ,也就是hql中全选所有列的 * 不用写也不能写。注意hql和sql中 as 都是可省略的,不要忽略这点。1.更新/删除操作只需增加注解 @Modifying 2.使用形参,有两种方式: 法1: ?1 和 ?2 分别代指形参 username 和 id 法2: 形参加注解@Param,hql中用 :ids 指代。值得一提,当参数是数组时仍然可用,如例子。例子1: 例子为选择username列的所有数据。注意泛型问题,这里相当于 List《Object》 。你也可使用 String) ,仍然有可能出现类型转换错误。 例子2: 选择两列的所有数据。注意泛型问题,这里相当于 List《Object》 。问题:只想简单执行hql语句,不想去改动DAO层中接口的方法。 答:使用org.hibernate包的Session类和Query类。 链接
本文相关文章:
phpstorm配置xdebug(如何在xampp环境下配置phpstrom xdebug)
2024年9月10日 02:30
oracle11g 数据库创建失败(oracle 11g_r2 创建数据库时 Enterprise Manager 配置失败)
2024年9月6日 19:50
centos7网卡配置(centos 7虚拟机怎么配置网卡eno 16)
2024年8月31日 12:35
xml常用标签(web.xml文件主要配置有哪些,都有什么含义)
2024年8月26日 11:20
feignclient(Feign Client超时时间配置以及单独给某接口设置超时时间方法记录)
2024年8月20日 09:55
hibernate二级缓存有什么用(如果不配置hibernate的二级缓存的话,是不是就体现不出hibernate的优越性)
2024年8月16日 14:55
vscode配置python(mac下VScode怎么配置编译Python)
2024年8月11日 06:07
java获取项目中的文件(java文件怎么获取项目下的配置文件)
2024年8月9日 18:30
centos java环境配置(如何在阿里云Centos7.0上配置java web环境)
2024年8月5日 22:10
超详细tomcat安装及配置教程(apache_tomcat_7.0.69怎样安装及配置)
2024年8月5日 04:15
vmware开100个虚拟机(我电脑要开100个虚拟机电脑需要什么样的配置)
2024年8月5日 03:25
web服务器的配置(ASP.NET开发宝典:配置Web服务器(IIS)虚拟站点)
2024年8月4日 12:35
apache一键安装(怎样在windows下配置apache vhost)
2024年8月3日 20:50
qt creator怎么配置vs2013编译器?跪求啊!STM32编译开发板串口例程,总是出现错误
2024年8月3日 20:26
cmakelist语法(怎样编写Cmake的配置文件Cmakelist.txt)
2024年8月2日 15:46
pycharm使用教程unittest(一、unittest通过main()方法运行的配置)
2024年7月27日 23:55
console线驱动(笔记本没有console口想连线配置交换机和路由怎么办)
2024年7月27日 20:25
更多文章:
哪几款CRM系统免费又好使用的呢?有哪些免费的轻量级在线CRM系统
2024年5月6日 04:29
疾风剑豪bug(LOL中,看到有网友录制亚索新BUG无CD连Q,我对线时却哭了,具体怎么操作)
2024年7月23日 23:21
solidworks2012安装方法(如何安装solidworks201264位)
2024年5月5日 15:35
台式电脑没有无线网卡怎么连wifi(台式电脑没有无线网卡能用无线网吗)
2024年7月2日 10:40
autodesksmoke(视频剪切,特效,合并,转换,哪个软件好用、易学)
2024年7月2日 23:57
起点中文网手机版(起点中文网手机版为什么显示有这么多评论但是点进去却只有那两条如何看到全部的评论)
2024年7月2日 12:01
粉末游戏鸟玩家有什么用?App Store里面有什么好玩的体育类手机游戏
2024年5月10日 01:22