使用hibernate5.2.10编写hibernate helloworld
来源:互联网 发布:如何选择理财产品 知乎 编辑:程序博客网 时间:2024/05/20 23:36
今天刚开始学习Hibernate,在写 helloworld过程中,通过 Hibernate API 编写访问数据库的代码时出现错误。原因是最新版本5.2.10已经不再使用 ServiceRegistry 来获得 SessionFactory。具体代码: (oracle数据库)
SessionFactory sessionFactory; Session session; Transaction transaction;//创建 Configuration 对象:对应 hibernate 的基本配置信息和 对象关系映射信息Configuration configuration = new Configuration().configure();//5.2.10版本.调用Configuration的buildSessionFactory()方法返回一个SessionFactory对象 sessionFactory = configuration.buildSessionFactory(); //4.x版本. 创建一个 ServiceRegistry 对象: hibernate 4.x 新添加的对象//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.//ServiceRegistry serviceRegistry = //new ServiceRegistryBuilder().applySettings(configuration.getProperties())// .buildServiceRegistry();//sessionFactory = configuration.buildSessionFactory(serviceRegistry);//从SessionFactory 中获取 Session 对象session = sessionFactory.openSession(); //开启事务transaction = session.beginTransaction();//执行保存操作News news = new News("Java","LOVEYIYI",new Date(new java.util.Date().getTime()));session.save(news);//提交事务transaction.commit();//关闭 Sessionsession.close();//关闭 SessionFactorysessionFactory.close();
代码实现后,用JUit4测试会出现 Disabling contextual LOB creation as createClob() method threw error : java.lang 异常,这是因为Hibernate默认获取方式是jdbc,如果使用连接池的方式的话,需要在src下新建一个hibernate.properties,或者在配置文件里,写上一句 hibernate.temp.use_jdbc_metadata_defaults=false以下为helloworld全部代码:
News.java
import java.sql.Date;public class News {private Integer id;private String title;private String author;private Date datetime;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Date getDatetime() {return datetime;}public void setDatetime(Date datetime) {this.datetime = datetime;}public News(String title, String author, Date datetime) {super();this.title = title;this.author = author;this.datetime = datetime;}public News() {super();// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "News [id=" + id + ", title=" + title + ", author=" + author + ", datetime=" + datetime + "]";}}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- 配置连接数据库的基本信息 --> <property name="connection.username">scott</property> <property name="connection.password">tiger</property> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:ORCL</property> <!-- 配置 hibernate 的基本信息 --> <!-- hibernate 所使用的数据库方言 --> <property name="dialect">org.hibernate.dialect.Oracle9iDialect</property> <!-- 执行操作时是否在控制台打印SQL --> <property name="show_sql">true</property> <!-- 是否对 SQL 进行格式化 --> <property name="hibernate.format_sql">true</property> <!-- 指定自动生成数据表的策略 --> <property name="hbm2ddl.auto">update</property> <!-- 指定关联的 .hbm.xml文件 --> <mapping resource="com/loveyiyi/hibernate/helloworld/News.hbm.xml"/> </session-factory></hibernate-configuration>
News.hbm.xml(本人使用了 hibernate tools,该代码为生成代码)
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2017-9-12 11:20:46 by Hibernate Tools 3.5.0.Final --><hibernate-mapping> <class name="com.loveyiyi.hibernate.helloworld.News" table="NEWS"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <!-- 指定主键的生成方式 ,native:使用数据库本地方式--> <generator class="native" /> </id> <property name="title" type="java.lang.String"> <column name="TITLE" /> </property> <property name="author" type="java.lang.String"> <column name="AUTHOR" /> </property> <property name="datetime" type="java.sql.Date"> <column name="DATETIME" /> </property> </class></hibernate-mapping>
HibernateTest.java
import static org.junit.Assert.*;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.junit.Test;public class HibernateTest {@Testpublic void test() {SessionFactory sessionFactory; Session session; Transaction transaction;//创建 Configuration 对象:对应 hibernate 的基本配置信息和 对象关系映射信息Configuration configuration = new Configuration().configure();//调用Configuration的buildSessionFactory()方法返回一个SessionFactory对象 sessionFactory = configuration.buildSessionFactory(); //从SessionFactory 中获取 Session 对象session = sessionFactory.openSession(); //开启事务transaction = session.beginTransaction();//执行保存操作News news = new News("C#","C++",new Date(new java.util.Date().getTime()));session.save(news);//提交事务transaction.commit();//关闭 Sessionsession.close();//关闭 SessionFactorysessionFactory.close();}}
最后感谢这两位朋友,看了他们的文章和网上各种论坛里的评论我才茅塞顿开
http://blog.csdn.net/bakbeom/article/details/77850909
http://blog.csdn.net/xinteng2012/article/details/38709653
阅读全文
2 0
- 使用hibernate5.2.10编写hibernate helloworld
- (自己使用Hibernate出现的版本问题)Eclipse上使用Hibernate5.0及以上版本编写!
- Hibernate入门HelloWorld程序编写
- myeclipse中使用hibernate的异常(hibernate5.1)
- hibernate笔记-002-hibernate5.2使用hbm2ddl.auto错误
- hibernate配置(hibernate5)
- Hibernate5.2.10使用SchemaExport创建数据库
- 使用pthreads基本函数编写helloworld.c
- 使用Maven配置Hibernate5
- hibernate5.2.1版本使用
- 第一次使用hibernate写的helloworld
- hibernate helloworld
- Helloworld!Hibernate
- hibernate-helloworld
- Hibernate-HelloWorld
- Hibernate-helloWorld
- Hibernate5
- Hibernate5
- Swing学习----------QQ登录界面制作(一)
- MyEclipse 环境配置总结
- request
- 网易2017春招[编程题]双核处理
- mybatis IncompleteElementException:Could not find result map java.lang.String
- 使用hibernate5.2.10编写hibernate helloworld
- 最长回文子串
- 快速排序(分而治之策略及C语言实现)
- 【bzoj3733】[Pa2013]Iloczyn
- Swing学习----------QQ登录界面制作(二)
- Spring Boot第二弹:Spring Boot热插拔
- 有趣的安全游戏--哈密顿行动(四)突破程序的锁
- Oracle 12c Windows安装、介绍及简单使用(图文)
- Java中的一对一关联关系(二)