《Java从入门到放弃》框架入门篇:hibernate基本用法

昨天我们进行了hibernate的配置,并且进行了根据ID查询对应数据的操作,今天我们来看看hibernate中的几个配置文件,里面到底有什么东东。

一、hibernate.cfg.xml

<hibernate-configuration>
    <session-factory>
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <property name="connection.url">
            jdbc:mysql://127.0.0.1:3306/superktv
        </property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <property name="myeclipse.connection.profile">mysql</property>
        <mapping resource="com/pxy/dao/Author.hbm.xml" />
    </session-factory>
</hibernate-configuration>

这里面应该没有什么不好懂的吧,就注意一点,<mapping>标签的路径不要引用错了,每次引用完后,记得按住Ctrl键,再把鼠标移动到resource的值上去,如果双引号里的内容变成了超链接,那说明没问题。当然,如果你是通过DBBrowser生成的文件,那肯定不会引用错误。

二、Author.hbm.xml

<hibernate-mapping>
    <class name="com.pxy.entity.Author" table="author" catalog="blogdb">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="username" type="java.lang.String">
            <column name="username" length="20" not-null="true" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="password" length="10" not-null="true" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="email" length="20" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="address" length="20" />
        </property>
        <property name="phone" type="java.lang.String">
            <column name="phone" length="20" />
        </property>
    </class>
</hibernate-mapping>

class标签的name表示对应的实体类,table表示对应的数据表,catalog表示对应的数据库。

id标签:表示主键。

generator标签:主键的生成策略。

property标签:表示实体类的属性。

column标签:表示对应表中的字段。

对于单个对象的操作,我们上次已经用过了load方法,除此之外,常用的还有以下四个:

get()方法,save()方法,update()方法,delete()方法

从名字就应该可以猜出对应的用法吧,这儿就不在一一演示了,各位看官自行解决吧·

最后简单说一下load()和get()的区别:

load()方法是延时加载,调用时只返回一个代理对象(只包含ID),并且如果没有该ID对应的数据会抛ObjectNotFoundException异常。

get()方法是实时加载,调用后就返回ID对应的记录,如果数据不存在则返回null对象。

为了测试一下效果,我们在hibernate的配置文件中加<propertyname="show_sql">true</property>和<property name="format_sql">true</property>。

注意看下面两段代码及结果的区别。

至于查不存在的数据,大伙就自己试试吧。今天的

就打到这儿吧。下一篇我们来了解稍微高深那么一点点的知识吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java技术栈

@Controller,@Service,@Repository,@Component详解。

@Controller 用来表示一个web控制层bean,如SpringMvc中的控制器。 @Service 用来表示一个业务层bean。 @Repositor...

3095
来自专栏Java Edge

@Controller和@RestController

1054
来自专栏前端杂货铺

解决ajax跨域请求 (总结)

ajax跨域请求,目前已用几种方法实现: 1)用原生js的xhr对象实现。                var url="http://freegeoip....

2728
来自专栏韩东吉的Unity杂货铺

零基础入门 42:更新Unity2017快捷键清除日志

Hello,之前在零基础入门系列里,有发过关于快捷键清除日志的文章,但是当时的Unity版本是Unity5.5,很多人和我说用起来都还蛮方便,但是随着2017的...

502
来自专栏前端那些事

起步 - vue-router路由与页面间导航

我们知道路由定义了一系列访问的地址规则,路由引擎根据这些规则匹配找到对应的处理页面,然后将请求转发给页进行处理。可以说所有的后端开发都是这样做的,而前端路由是不...

840
来自专栏Linyb极客之路

编码习惯之参数校验和国际化规范

今天我们说说参数校验和国际化,这些代码没有什么技术含量,却大量充斥在业务代码上,很可能业务代码只有几行,参数校验代码却有十几行,非常影响代码阅读,所以很有必要把...

2876
来自专栏林德熙的博客

win10 uwp 资源字典 资源的key所有的元素都可以定义资源合并资源字典主题资源共享的资源用户控件资源定义

本文主要翻译ResourceDictionary and XAML resource references - UWP app developer ,里面的代码...

531
来自专栏程序之美

spring mvc 国际化的几种方案

通过设置浏览器请求测试:http://localhost:8080/xxx/nation/test

1253
来自专栏菩提树下的杨过

Silverlight中多个Xaml("场景"? or "窗口"? )之间的切换/调用/弹出/传参数问题小结

silverlight中不存在Flash中的场景,有的只是一个个Xaml文件,你要是愿意,也可以把它看做"场景"或"窗口",刚开始接触sl时,对于多个xaml之...

1797
来自专栏前端那些事

起步 - vue-router路由与页面间导航

vue-router 我们知道路由定义了一系列访问的地址规则,路由引擎根据这些规则匹配找到对应的处理页面,然后将请求转发给页进行处理。可以说所有的后端开发都是这...

28010

扫码关注云+社区