Hibernate是什么?
对数据库进行操作的框架。
JDBC不好用吗?为什么要多次一举?
考虑了可重用性。套用一下大话设计模式的话:假如服务商突然为了节省成本改了数据库,前期你修改的开销可能比较小,后期就只能靠通宵加班来弥补了。所以怎么规避这个问题,用反射。或者就用这个Hibernate框架了。
Hibernate还有什么兄弟姐妹?
SSH,即struts+spring+hibernate,让你web开发形成完整体系,加快开发效率,提升项目境界,以后会写另两个的配置和使用教程。
怎么配置?
1.
新建工程,勾选Hibernate,选择下载就不用自己去找jar包了,Configure选择你想要的版本。
2.左下角,点击database
3.右边出来这个界面
4.选择你的数据库,这里选的是mysql(强力推荐,无敌)
5.
出来这个界面,配置下参数,再测试连接,成功了点ok。
6.再次点击左下角,选择Persistence
7.左下角出现这个框,右键你的项目
8.
点到by database schema
9.出来这个界面,看清楚所有的勾选
10.
这里会根据数据库的表自动给你创建bean和映射文件,映射成的文件名默认是UserEntity,我这里改成UserBean,没有影响的。要建个包,不然default目录下是不让放的。
11.配置hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/cloudprocurement</property> <!--后面跟的数据库名--> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!--mysql的驱动,报错就alt-enter自动下载--> <property name="connection.username">root</property> <property name="connection.password">xbh136284</property> <!--账号密码--> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <!--方言--> <mapping resource="com/example/shopsystem/hibernate/UserBean.hbm.xml"/> <!--user表的映射文件完整路径--> </session-factory> </hibernate-configuration>
10.之后测试的时候还是有错的,需要工具类。
package com.example.shopsystem.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory sessionFactory; public static SessionFactory getSessionFactory() { return sessionFactory; } public HibernateUtils(){} static { Configuration cfg = new Configuration(); cfg.configure(); sessionFactory = cfg.buildSessionFactory(); } public static Session getSession() { return sessionFactory.openSession(); } public static void main(String[] args) { sessionFactory = HibernateUtils.getSessionFactory(); System.out.println(sessionFactory); } }11.测试代码,添加
public class Test { public static void main(final String[] args) throws Exception { UserBean bean = new UserBean(); bean.setUserId(2); bean.setUserName("13628402"); bean.setUserPassword("xbh1362888"); bean.setUserJob("a"); bean.setUserPhoneNumber(1596880L); SessionFactory sessionFactory = getSessionFactory(); //getSessionFactory(),getSession() //是来自工具类的,导路径要正确 Session session = getSession(); session.beginTransaction(); session.save(bean); session.getTransaction().commit(); } }
12.使用,查询
http://blog.csdn.net/einsdan/article/details/40149585
里面有3种Hibernate的查询方式,我采用的是第二种,非常的方便。
最后 在java运行是ok的 在web运行是有问题的 所以需要把连接数据库的jar包放到webinf的lib文件夹下,并且在artifact中把jar包都fix进去。
最后 那个persistence映射的时候 需要勾选左边1,3个