更新時(shí)間:2023-01-13 14:00:42 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2186次
1.什么是Java Persistence API?
Java Persistence API(JPA)是Java的規(guī)范, 用于在Java對(duì)象和關(guān)系數(shù)據(jù)庫(kù)之間持久化數(shù)據(jù)。 JPA充當(dāng)面向?qū)ο蟮挠蚰P秃完P(guān)系數(shù)據(jù)庫(kù)系統(tǒng)之間的橋梁。由于JPA只是一個(gè)規(guī)范, 因此它本身不會(huì)執(zhí)行任何操作。它需要一個(gè)實(shí)現(xiàn)。因此, 諸如Hibernate, TopLink和iBatis之類(lèi)的ORM工具實(shí)現(xiàn)了JPA規(guī)范以實(shí)現(xiàn)數(shù)據(jù)持久性。 Java Persistence API的第一個(gè)版本JPA 1.0于2006年發(fā)布, 它是EJB 3.0規(guī)范的一部分。
2.JPA是否執(zhí)行諸如訪問(wèn), 保留和管理數(shù)據(jù)之類(lèi)的實(shí)際任務(wù)?
不, JPA只是一個(gè)規(guī)范。 Hibernate, iBatis和TopLink等ORM工具實(shí)現(xiàn)JPA規(guī)范并執(zhí)行這些類(lèi)型的任務(wù)。
3.什么是對(duì)象關(guān)系映射?
對(duì)象關(guān)系映射是一種機(jī)制, 用于通過(guò)將對(duì)象狀態(tài)映射到數(shù)據(jù)庫(kù)列中來(lái)開(kāi)發(fā)和維護(hù)對(duì)象與關(guān)系數(shù)據(jù)庫(kù)之間的關(guān)系。它將編程代碼的屬性轉(zhuǎn)換為表的列。它能夠輕松處理各種數(shù)據(jù)庫(kù)操作, 例如插入, 更新, 刪除等。
4.JPA的優(yōu)點(diǎn)是什么?
JPA的優(yōu)點(diǎn)如下。
5.有哪些可嵌入類(lèi)?
可嵌入類(lèi)表示實(shí)體的狀態(tài), 但沒(méi)有自己的持久標(biāo)識(shí)。這樣的類(lèi)的對(duì)象共享?yè)碛兴膶?shí)體類(lèi)的標(biāo)識(shí)。實(shí)體可以具有單值或多值可嵌入類(lèi)屬性。
6.列出一些ORM框架。
以下是在ORM機(jī)制上起作用的各種框架:-
7.什么是JPQL?
JPQL是JPA規(guī)范中定義的Java Persistence查詢語(yǔ)言。它用于構(gòu)造查詢。
8.插入實(shí)體有哪些步驟?
我們可以輕松地通過(guò)實(shí)體將數(shù)據(jù)插入數(shù)據(jù)庫(kù)。 EntityManager提供了persist()方法來(lái)添加記錄。以下步驟用于將記錄插入數(shù)據(jù)庫(kù)。
創(chuàng)建一個(gè)具有屬性Student_name的實(shí)體類(lèi), 例如Student.java。
package com.srcmini.jpa.student;
import javax.persistence.*;
@Entity
@Table(name="student")
public class Student {
@Id
private String s_name;
public StudentEntity(String s_name) {
super();
this.s_name = s_name;
}
public StudentEntity() {
super();
}
public String getS_name() {
return s_name;
}
public void setS_name(String s_name) {
this.s_name = s_name;
}
}
現(xiàn)在, 在Persistence.xml文件中映射實(shí)體類(lèi)和其他數(shù)據(jù)庫(kù)配置。
<persistence>
<persistence-unit name="Student_details">
<class>com.srcmini.jpa.student.StudentEntity</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/studentdata"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="eclipselink.logging.level" value="SEVERE"/>
<property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
</properties>
</persistence-unit>
</persistence>
在com.srcmini.jpa.persist包下創(chuàng)建一個(gè)名為PersistStudent.java的持久性類(lèi), 以將實(shí)體對(duì)象與數(shù)據(jù)持久化
package com.srcmini.jpa.persist;
import com.srcmini.jpa.student.*;
import javax.persistence.*;
public class PersistStudent {
public static void main(String args[])
{
EntityManagerFactory emf=Persistence.createEntityManagerFactory("Student_details");
EntityManager em=emf.createEntityManager();
em.getTransaction().begin();
StudentEntity s1=new StudentEntity();
s1.setS_name("Gaurav");
em.persist(s1);
em.getTransaction().commit();
emf.close();
em.close();
}
}
以上就是“Jpa面試題的簡(jiǎn)單分析與練習(xí)”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)