第一个Hibernate例子(亲测可用)

照着视频,搭建了hibernate环境,运行成功更新了数据库,简要说明下步骤以及注意事项。
1.创建java工程(web工程也可)
创建一个名叫test的java工程
2.下载jar包
jar包不要下多,更不要下少,所需要的jar包共14个,如图所示!
这里写图片描述
在此直接附上jar包下载地址http://download.csdn.net/download/youxier/10040112,并将jar包build到工程中
3.目录结构
我创建的目录如图所示,其中hibernate.cfg.xml文件的名称和位置固定,不能修改,其他包名、类名可以随意修改,对应的配置文件的名称也得相应修改。
4.创建实体类
创建User实体类,代码如下

public class User {
    //要求 实体类有一个唯一属性
    private int uid;
    private String username;
    private String paasword;
    private String address;
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPaasword() {
        return paasword;
    }
    public void setPaasword(String paasword) {
        this.paasword = paasword;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}

5.创建映射文件User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

        <!-- 1配置类和表对应
             class标签
            name属性:实体类全路径 
        -->
    <class name="com.tian.hibernate.User" table="t_user">
        <!-- 配置实体类id和表id对应
             hibernate要求实体类有一个属性唯一值
             hibernate要求表有字段唯一值
         -->
         <!-- id标签
                name属性:实体类里面id属性名称
                column属性:生成字段的名称
          -->
         <id name="uid" column="uid">
            <!--  设置数据库表id增长策略
                    native:生成表id值是主键自动增长
            -->
            <generator class="native"></generator>
         </id>
         <property name="username" column="username"></property>
         <property name="paasword" column="paasword"></property>
         <property name="address" column="address"></property>
    </class>
</hibernate-mapping>

6.创建hibernate配置文件hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC     
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"     
          "http://www.hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
    <!--  配置mysql信息-->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///tian</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <!-- 配置bibernate信息-->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 把映射文件放到核心配置文件中 -->
        <mapping resource="com/tian/hibernate/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

7.创建测试类,运行结果

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class HibernateDemo {
    @Test
    public void testAdd(){
        Configuration cfg = new Configuration();
        cfg.configure(); 

        SessionFactory sessionFactory = cfg.buildSessionFactory();
        Session session = sessionFactory.openSession();

        Transaction tx = session.beginTransaction();

        User user = new User();
        user.setUsername("小王");
        user.setPaasword("17");
        user.setAddress("American");
        session.save(user);

        tx.commit();
        session.close();
        sessionFactory.close();
    }
}

运行后,得到结果如下
这里写图片描述


注意事项

1.我在配置两个xml文件时,eclipse没有出现标签自动补全,这个不影响程序的正确运行,照着代码敲就好了,不用担心程序出错。
2.至于如何自动补全,照着网上的做,什么先把dtd文件下下来,再window->preferences什么的,一套流程都做了,可还是不行,希望有做好的,留言。
3.两个xml文件里有些变量是我定义的,可能在不同环境需要做相应改变,在此有问题可以提出。


猜你喜欢

转载自blog.csdn.net/youxier/article/details/78355014