第一个Hibernate

来源:互联网 发布:mac lnmp 一键安装包 编辑:程序博客网 时间:2024/05/16 16:01

  新建一个java项目,复制hibernate,etc下的hibernate.cfg.xml放在src下,修改后为:

<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory>  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>  <property name="hibernate.connection.username">root</property>  <property name="hibernate.connection.password">root</property>    <property name="show_sql">true</property>  <property name="hibernate.hbm2ddl.auto">create</property><!--create每次运行前都删除已有的,在创建。update正常更新表中数据。还有create-dorp和validate-->    <mapping resource="po/User.hbm.xml"></mapping></session-factory></hibernate-configuration>
  导入jar包


  在po里面写一个User类,有三个属性,javabean规范。

package po;public class User {private Integer id;private String name;private String email;public User() {}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}
  复制eg\org\hibernate\auction下的和User一起放入po,对User.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 package="po"><class name="User" table="t_user"><id name="id" column="userId" type="int"><generator class="native"></generator><!-- native生成主键,并且递增。 --></id><property name="name" column="username" type="string"></property><property name="email" column="email" length="40"></property></class></hibernate-mapping>
  在Test包里写一个Test

package test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import po.User;public class Test {public static void main(String[] args) {Configuration conf = new Configuration();conf.configure();SessionFactory sessionFactory = conf.buildSessionFactory();Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();User user = new User();user.setName("aaa");user.setEmail("bbb");session.save(user);transaction.commit();session.close();}}

  升级版

   先写一个HibUitl
package util;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibUtil {private static SessionFactory sessionFactory;static{Configuration conf = new Configuration().configure();sessionFactory = conf.buildSessionFactory();}public static Session getSession(){return sessionFactory.openSession();}}
  再写一个UserDao,对每个方法进行测试。
package dao;import java.util.Iterator;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import po.User;import util.HibUtil;public class UserDao {public void add(User user){Session session = HibUtil.getSession();session.beginTransaction();session.save(user);session.getTransaction().commit();session.close();}public void del(Integer id){Session session = HibUtil.getSession();session.beginTransaction();User user = (User) session.get(User.class, id);session.delete(user);session.getTransaction().commit();session.close();}public User getById(Integer id){Session session = HibUtil.getSession();session.beginTransaction();User user = (User)session.get(User.class, id);return user;}public void update(User user){Session session = HibUtil.getSession();session.beginTransaction();session.update(user);session.getTransaction().commit();session.close();}public List<User> getAll(){Session session = HibUtil.getSession();session.beginTransaction();Query query = session.createQuery("from User");List<User> list = query.list();session.getTransaction().commit();session.close();return list;}public static void main(String[] args) {UserDao dao = new UserDao();//User user = new User();//user.setName("gaogao");//user.setEmail("user@gmail.com");//dao.add(user);//dao.del(1);//User user = dao.getById(2);//System.out.println(user.getName());//User user = new User();//user.setId(2);//user.setName("gaogaogaogao");//dao.update(user);//List list = dao.getAll();//for (Iterator iterator = list.iterator(); iterator.hasNext();) {//User user = (User) iterator.next();//System.out.println(user.getName());//}}}