Java操作資料庫方式三Hibernate的使用之註解的使用
##概述
在hibernate中,通常配置物件關係對映關係有兩種,一種是基於xml的方式,另一種是基於annotation的註解方式。
在hibernate4及以後的版本直接使用註解,如果使用hibernate3的版本就需要引入annotation的jar包。
在前面的部落格中建立student.hbm.xml檔案和score.hbm.xml檔案就是基於xml的方式。下面介紹註解的使用。
##準備工作
與以上兩篇部落格同。
##開發環境
與以上兩篇部落格同。
##正式開發
下面仍然以student和score表為例說明註解的使用
一,建立Model類
註解方式最重要的就是寫在Model類中的註解。
student的Model類如下:
@Entity //表示是hibernate中的例項 @Table(name = "student")//對應student表 @Proxy(lazy = false)//不使用懶載入機制 public class Student { private int id; private String name; private int age; private Set<Score> score = new HashSet<>(); @Id//對應表中的ID @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(name = "name" ,length=50)//對應表中的一列,name表示表的欄位名,若不寫則認為類的欄位名就是表的欄位名 public String getName() { return name; } public void setName(String name) { this.name = name; } @Column(length=11) public int getAge() { return age; } public void setAge(int age) { this.age = age; } //一對多的關係,mappedBy的值對應Score類中ManyToOne註解所在的欄位 @OneToMany(cascade={javax.persistence.CascadeType.ALL}, fetch=FetchType.EAGER,mappedBy = "student") public Set<Score> getScore() { return score; } public void setScore(Set<Score> score) { this.score = score; } }
score的Model類如下:
@Entity @Table(name = "score") @Proxy(lazy = false) public class Score { private int id; private int score; private String type; private Student student; @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } @Column(length=11) public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Column(length=20) public String getType() { return type; } public void setType(String type) { this.type = type; } //多對一 @ManyToOne(cascade={CascadeType.ALL}) @JoinColumn(name="student_id")//外來鍵 public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } }
二,建立hibernate框架的全域性配置檔案
全域性配置檔案放在resource目錄下,命名為:hibernate.cfg.xml。檔案內容如下:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 一個sessionFactory代表資料庫的一個連線-->
<session-factory>
<!-- 連結資料庫的使用者名稱 -->
<property name="connection.username">root</property>
<!-- 連結資料庫的密碼 -->
<property name="connection.password">root</property>
<!-- 連結資料庫的驅動 -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- 連結資料庫的url -->
<property name="connection.url">
jdbc:mysql://localhost:3306/xia
</property>
<!--方言,告訴hibernate使用什麼樣的資料庫,hibernate就會在底層拼接什麼樣的sql語句-->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!--
配置根據持久化類生成表的策略
validate 通過對映檔案檢查持久化類與表的匹配
update 每次hibernate啟動的時候,檢查表是否存在,如果不存在,則建立,如果存在,則什麼都不做了
create 每一次hibernate啟動的時候,根據持久化類和對映檔案生成表
create-drop
-->
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<!--載入model類與表結構對映關係檔案-->
<!--<mapping resource="student.hbm.xml" />-->
<!--<mapping resource="score.hbm.xml" />-->
<!--注:此時沒有對映檔案,需配置class檔案-->
<mapping class="com.honor.sql.Student"/>
<mapping class="com.honor.sql.Score"/>
</session-factory>
</hibernate-configuration>
三,驗證註解是否配置成功
以查詢為例,程式碼如下:
public static Student selectStudent(int id) {
//獲取Session物件
Session session = getSession();
try {
session.beginTransaction();
//根據id查詢Student物件
Student student = session.load(Student.class, id);
session.getTransaction().commit();
return student;
} catch (Exception e) {
e.printStackTrace();
//出現異常時回滾事務
session.getTransaction().rollback();
} finally {
if (session != null) {
if (session.isOpen()) {
session.close();//關閉session
}
}
}
return null;
}
結果如下:
##總結
相關推薦
Java操作資料庫方式三Hibernate的使用之註解的使用
##概述在hibernate中,通常配置物件關係對映關係有兩種,一種是基於xml的方式,另一種是基於annotation的註解方式。在hibernate4及以後的版本直接使用註解,如果使用hiberna
Java操作資料庫方式二DBCP使用詳解
##概述DBCP的全稱是:DataBase connection pool,翻譯是:資料庫連線池。在Java操作資料庫方式一JDBC使用詳解中說到直接使用JDBC非常消耗資源。為了避免頻繁關閉連結資料庫
Java操作資料庫之jdbc【原生方式】
引言:Java對資料庫的操作有很多種技術。例如說jdbc,dbutil +C3p0,hibernate,jdbcTemplate等等【這五個都會總結】,到後面的話使用一些高階的框架去操作資料庫,
Laravel操作資料庫的三種方式總結歸納
國慶這幾天都在外面浪,馬上要上班了,該收心了,趁今天有些空閒的時間,靜下心總結下Laravel操作資料庫的三種方式,以作資料和參考:(三種方式:DB façade 、 查詢構造器、 Eloquent ORM ) 目錄 一、使用DB façade(原始查詢)操作資料庫 二、使用查詢構
java操作資料庫之模糊查詢
首先,在接口裡新增模糊查詢的方法,程式碼如下: ---------------------------------程式碼開始---------------------------------- package com.dao; import java.util.List; import
Java常用類(三)之StringBuffer與StringBuidler
lane 這一 eight cit 優先 simple bmp imp uid 前言 前面一篇給大家介紹了String類,這個我們經常會用到的一個類,那這一篇給大家分享的是StringBuffer與StringBuidler。等下我也會比較他們三個之間的區別 一、S
Java設計模式(三)之建立型模式:單例模式
一、概念: java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裡主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。 單例模式有以下特點: (1)單例類只能有一個例項; (2)單例類必須自己建立自己的唯一例項; (3)單例類必須給所有其他物件提供這一例項。 單例
Java架構-JavaSE(三)之static、final、abstract修飾符
閱讀目錄(Content) 一、static修飾符 1.1、static變數 1.2、static方法 1.3、程式碼塊和靜態程式碼塊 1.4、建立和初始化物件的過程 二、final修飾符 2.1、修飾類 2.2、修飾方法 2.3、修飾變數 三、abstract修飾符 3
JDBC操作資料庫以及三層架構模式
JDBC操作資料庫 1、JDBC概念 JDBC是實現java程式對各種資料庫的訪問,是一組類和介面,位於java.sql與javax.sql包 2、通過JDBC連線資料庫(不優化前) //1、載入驅動 Class.forName("com.mysql.jdbc.Dr
《大話設計模式》Java程式碼示例(三)之裝飾模式
裝飾模式(Decorator):動態地給一個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。 package decorator; /** * 裝飾模式(Decorator) * Person類 */ public class Perso
MongoDB使用Java操作資料庫案例
一、pom.xml依賴 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>
JAVA操作資料庫一(Spring data jpa)
總的來說,JAVA操作資料庫還是相當方便的。 首先是核心配置檔案daoContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.o
黑馬程式設計師——Java集合框架(三)之Map集合、Collections與Arrays工具類
-----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------ Map集合 一、概述 Map集合儲存的元素是鍵值對,即將鍵和值一對一對往裡存,而且要保證鍵的唯一性。 問題思考: 1.如何保證鍵的唯一性?
效能測試工具操作資料庫(三)-Jmeter與Mysql
1、安裝mysql的驅動包 · 為了連線Mysql資料庫,還需要下載"mysql-connector-java",可以從下載 新建測試計劃,載入jar包路徑,如下: 2、建立JDBC
JAVA操作資料庫的一個通用類
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; impo
java操作資料庫 存在就更新不存在就插入的優化操作
當我們用java,jdbc 或者 spring的jdbctemplate來操作資料時候,總有時候會碰到 存在就插入不存在就更新 這樣的需求,我們一般都是用下面的方法解決 public void save(){ JdbcTemplate jdbc = getJd
hibernate tool 從資料庫逆向生成Hibernate帶註解的實體類
1. 首先,要在eclipse中採用自帶的資料庫管理器(Data Management),連通你的資料庫: 然後選擇資料庫,這裡用的oracle,然後給個名字,如MyOracle。 點選下圖中按鈕,新建一個數據庫驅動的配置。 選擇資料庫版本,這裡是oracle
Java操作資料庫注意點
1、addBatch批處理: smt.addBatch(sql1); smt.addBatch(sql2); smt.addBatch(sql3); smt.executeBatch(); 注意:使用批處理需要注意查詢、新增、修改不能使用同一個Statement,否則會報
java操作資料庫中的Clob型別
首先是POJO類: import java.sql.Clob;import java.util.Date; /*** * @author coffee**/ public class KybasicInfo implements java.io.Serializable {
最簡單的fastdfs教程|java操作fastdfs《三》
專案結構 需要的jar包 <dependency> <groupId>org.csource</groupId>