ORM(一)

额,原谅我昨天让老铁帮我把电脑重做了系统,又是一顿安软件,配环境,感觉要gg,现在才想起来ORM还有作业没做,嗯,那就借鉴借鉴大佬们写的吧,hiahiahia
image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

1.引入jar包

hibernate3.jar核心 + required 必须引入的(6个) + jpa 目录 + 数据库驱动包

如下图所示:
image.png
引入jar包的时候遇到了一些问题,一开始安装在了src下新建的lib文件夹下,但是后来发现不能够使用,需要建立一个新的

User Library,将自己所需的jar包add上,之后在项目上右键Build path—add library,将之前自建的library导入。

2.为了与数据库表建立映射关系,编写一个对象User.java

package sunrui;  
public class User {  
    private int id;  
    private String username;  
    private String password;  
    private String cellphone;  
    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 getCellphone() {  
        return cellphone;  
    }  
    public void setCellphone(String cellphone) {  
        this.cellphone = cellphone;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  
}  

3.编写对象映射->User.hbm.xml。

这一部分是在网上找的编写代码,在project>etc里没有看见,里面只找到了.cfg.xml文件

<?xml version="1.0" encoding="UTF-8"?>  
<hibernate-mapping package="sunrui">  

    <!--类名为User,表名也为User-->  
    <class name="User"  table="m">  

        <!--主键映射,属性名为id,列名也为id-->  
        <id name="id" column="id">  
            <!--根据底层数据库主键自动增长-->  
            <generator class="native"/>  

        </id>  

        <!--非主键映射,属性和列名一一对应-->  
        <property name="username" column="username"/>  
        <property name="cellphone" column="cellphone"/>  
        <property name="password" column="password"/>  
    </class>  
</hibernate-mapping>  

需要注意的是class name和table。一个是自己编写的类名,一个是自己想要建立到数据库中表的名字,表的名字可以随便写,但要和后面的代码对应好,如果写错类名会找不到文件

这一部分并没有什么困难的地方,问题出现一般就是没有对应好类名,另外就是id是主键列,generator根据底层数据库指定生成方法,如果主键不自增就会报错。

4.配置Hibernate核心配置文件(hibernate.cfg.xml)

这个需要创建在src目录下,注意不要写到自己自建的包中,hbm.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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/abc</property>  
        <property name="hibernate.connection.username">root</property>  
        <property name="hibernate.connection.password">sunrui1314</property>  
        <!-- 数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql -->  
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>  


        <!-- 其他相关配置 -->  
        <!-- 显示hibernate在运行时候执行的sql语句 -->  
        <property name="hibernate.show_sql">true</property>  
        <!-- 格式化sql -->  
        <property name="hibernate.format_sql">true</property>  
        <!-- 建表  -->  
        <property name="hibernate.hbm2ddl.auto">create</property>  

        <!--加载所有映射-->  
        <mapping resource="sunrui/User.hbm.xml"/>  

    </session-factory>  
</hibernate-configuration>  

在我们下载的hiberate文件目录下他原本是这个样子滴
image.png
这一部分需要注意的是

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>//这里是数据库驱动  
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/abc</property>//这里是数据库连接,你的连接名和建的数据库名,我们这里是abc  
        <property name="hibernate.connection.username">root</property>//这里是数据库用户名  
        <property name="hibernate.connection.password">sunrui1314</property>//这里密码千万不要写错  

还有加载全部映射的时候,mapping resource后面要接的是你自己建的包名+cfg.xml文件名,如果写错了会找不到文件相应目录无法成功执行

5.大功告成开始测试,建立测试类sr.java

package sunrui;  
import org.hibernate.Session;  
import org.hibernate.SessionFactory;  
import org.hibernate.Transaction;  
import org.hibernate.cfg.Configuration;  
public class Sr {  
    public static void main(String[] args) {  

        //创建对象  
        User m = new User();  
        m.setPassword("666");  
        m.setCellphone("18846420216");  
        m.setUsername("ifyou");  

        //获取加载配置管理类  
        Configuration configuration = new Configuration();  

        //不给参数就默认加载hibernate.cfg.xml文件,  
        configuration.configure();  

        //创建Session工厂对象  
        SessionFactory factory = configuration.buildSessionFactory();  

        //得到Session对象  
        Session session = factory.openSession();  

        //使用Hibernate操作数据库,都要开启事务,得到事务对象  
        Transaction transaction = session.getTransaction();  

        //开启事务  
        transaction.begin();  

        //把对象添加到数据库中  
        session.save(m);  

        //提交事务  
        transaction.commit();  

        //关闭Session  
        session.close();  
    }  
}  

这里的主要问题也就是类名不要写错!类名就是与数据库建立映射关系的User,还有就是相应的import不要忘记加,一般来说代码打上之后会有提示,选择相对的import包就完成了,最后是不要忘记关闭session,session做任何的操作,如果没有显示的调用commit()方法,都不会清理缓存、执行相应的SQL、提交事务。

6.结果显示

image.png
image.png
可以看到m表已经被建立在数据库中了

猜你喜欢

转载自blog.csdn.net/xuehangongzi/article/details/80232179
Orm
今日推荐