如何建立第一个hibernate项目以及解决相关出现的问题
2015-11-07 17:58
651 查看
今天着实让我头疼的很,在学习hibernate的时候,虽然理解了,但是真实的实例开发起来会遇到很多的问题,就仅仅从数据库取出属于显示出来就让我遇到了很大的麻烦,从早上忙到晚上,这里先说问题再说一个系统的开发流程:
首先:我发现建立hibernate.cfg.xml文件的时候,发现在最顶部提示一个警告,这一个警告很烦人,但是,知道现在我还是那他没有办法,dtd什么的都改了,验证也改了,就是没办法,。最后警告请教他人说这个岁项目没有太大的影响,与是我就彻底的放弃了。
然后就是一个非常大的问题了,当我按部就班的把所有的应用都全部写完的时候,一点击运行距提示很多错误,是很多错误,但是,至少我还是从错误里面获取了一些有用的信息,就是说我的代码有问题,当我把代码改进了之后,代码还是有问题,最后在错误的前面我看到了sl4j的一个jar包引入错误,为什么是会引入错误呢,我明明已经引入进去,但是,没有办法,错了就是错了,只能大胆的试了一把,假设sl4j的jar包有问题,那么我就从官网下载的最新的jar包全部更新,结果程序可以正常运行》
下面接着说建立hibernate项目的整个流程:
1;引入jar包,这里的jar包我已经全部修改整理好了hibernate-3.3.2jar包-已整理
2:建立hibernate.cfg.xml文件,这里不加赘述:
3:建立对象.hbm.xml配置文件,配置关系对象的映射关系
4:执行程序:
首先:我发现建立hibernate.cfg.xml文件的时候,发现在最顶部提示一个警告,这一个警告很烦人,但是,知道现在我还是那他没有办法,dtd什么的都改了,验证也改了,就是没办法,。最后警告请教他人说这个岁项目没有太大的影响,与是我就彻底的放弃了。
然后就是一个非常大的问题了,当我按部就班的把所有的应用都全部写完的时候,一点击运行距提示很多错误,是很多错误,但是,至少我还是从错误里面获取了一些有用的信息,就是说我的代码有问题,当我把代码改进了之后,代码还是有问题,最后在错误的前面我看到了sl4j的一个jar包引入错误,为什么是会引入错误呢,我明明已经引入进去,但是,没有办法,错了就是错了,只能大胆的试了一把,假设sl4j的jar包有问题,那么我就从官网下载的最新的jar包全部更新,结果程序可以正常运行》
下面接着说建立hibernate项目的整个流程:
1;引入jar包,这里的jar包我已经全部修改整理好了hibernate-3.3.2jar包-已整理
2:建立hibernate.cfg.xml文件,这里不加赘述:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">toor</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property> <mapping resource="com/xuning/demon/User.hbm.xml"/> </session-factory> </hibernate-configuration>3:建立数据库相应表的相关对象:如:
package com.xuning.demon; public class User { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
3:建立对象.hbm.xml配置文件,配置关系对象的映射关系
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.xuning.demon.User"> <id name="id"/> <property name="username" /> <property name="password" /> </class> </hibernate-mapping>
4:执行程序:
package com.xuning.demon; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class Usermain { public static void main(String[] args) { //实例化一个对象 User user=new User(); //给对象的成员属性赋值 user.setUsername("xuning7"); user.setPassword("toor"); //实例化configuration对象 Configuration cfg=new Configuration(); //读取hibernate。cfg.xml配置文件实例化sessionfactory对象 SessionFactory sessionFactory=cfg.configure().buildSessionFactory(); //实例化session并开启 Session session=sessionFactory.openSession(); //开始施行后事务。hibernate的dml必须执行事务 session.beginTransaction(); //保存对象 session.save(user); //提交事务 session.getTransaction().commit(); //关闭session session.close(); //关闭sessionfactory sessionFactory.close(); } }
相关文章推荐
- C#表达式
- php 命令空间总结
- Activity内部Handler引起内存泄露的原因分析
- could not find function "summarizeOverlaps"
- 通过adb命令修改文件权限问题
- Android开发--Handler引起的内存泄露
- 在android的spinner中,实现取VALUE值和ID值
- python之函数用法locals()
- 模拟Android软件试用到期提示注册
- 【套题】2015ACM/ICPC亚洲区长春站 HDU5532 5533 5534 5536 5538
- transient关键字
- .Net Framework 4.0 内部排序探索
- UTF-8,gb2312,GBK的区别
- Google Guava 类库简介
- MySQL的几个用法
- PLA code
- WordPress中修改固定链接导致无法显示文章内容的问题的解决办法
- Android签名有关问题
- android开发的一些概念
- bootstrap