คำถามติดแท็ก persistence

4
ความสับสน: @NotNull เทียบกับ @ คอลัมน์ (nullable = false) ด้วย JPA และไฮเบอร์เนต
เมื่อพวกเขาปรากฏบนสนาม / ทะเยอทะยานของความ@Entityแตกต่างระหว่างพวกเขาคืออะไร? (ฉันยืนยันเอนทิตีผ่านไฮเบอร์เนต ) กรอบและ / หรือข้อกำหนดใดที่แต่ละข้อเป็นของ @NotNulljavax.validation.constraintsตั้งอยู่ภายใน ในjavax.validation.constraints.NotNulljavadoc มันบอกว่า องค์ประกอบที่ใส่หมายเหตุประกอบจะต้องไม่เป็นโมฆะ แต่มันไม่ได้พูดถึงการเป็นตัวแทนขององค์ประกอบในฐานข้อมูลดังนั้นทำไมฉันจะเพิ่มข้อ จำกัดnullable=falseในคอลัมน์?

10
อะไรคือความแตกต่างระหว่างวิธีการประหยัดที่แตกต่างกันใน Hibernate
Hibernate มีวิธีการหลายวิธีที่จะนำวัตถุของคุณไปไว้ในฐานข้อมูล อะไรคือความแตกต่างระหว่างพวกเขาเมื่อไรที่จะใช้และทำไมไม่มีวิธีการอันชาญฉลาดเพียงวิธีเดียวที่รู้ว่าเมื่อไรที่จะใช้อะไร วิธีการที่ฉันได้ระบุไว้คือ: save() update() saveOrUpdate() saveOrUpdateCopy() merge() persist()

1
ไม่แน่ใจถ้าฉันเข้าใจ TransactionAwarePersistenceManagerFactoryProxy
ฉันกำลังพยายามใช้org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxyในโครงการ Spring ของฉัน แต่ฉันไม่แน่ใจว่าจะใช้งานอย่างไรหรือว่าเป็นสิ่งที่ฉันกำลังมองหาหรือไม่ ฉันรู้ว่ามันสามารถช่วยให้ DAO ของฉันทำงานกับ JDO ธรรมดาPersistenceManagerFactoryได้ คำถามอื่นคือ: จะเกิดอะไรขึ้นถ้าพร็อกซีไม่ได้รับการทำอย่างถูกต้อง? ฉันยังคงสามารถใช้มันเพื่อเข้าถึงโรงงานของฉันเพื่อสร้างผู้จัดการการคงอยู่ที่รับรู้ธุรกรรม หากวัตถุที่จัดการโดยโรงงานเป็นซิงเกิลตันสิ่งนี้จะเปลี่ยนแปลงหรือไม่? ทำไมไม่เพียงแค่เข้าสู่ PersistenceManagerFactory โดยตรง? บางทีอาจPersistenceManagerFactoryUtils.getPersistenceManagerจะเหมาะกับความต้องการของฉันมากกว่านี้? สามารถgetObjectคืนค่าว่างได้หรือไม่
192 java  spring  persistence  dao  jdo 

29
ไม่มีผู้ให้บริการที่มีอยู่สำหรับ EntityManager ชื่อ
ฉันมีpersistence.xmlชื่อเดียวกันโดยใช้TopLinkภายใต้META-INFไดเรกทอรี จากนั้นฉันมีรหัสเรียกด้วย: EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb"); ยังฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: 2009-07-21 09: 22: 41,018 [main] ข้อผิดพลาด - ไม่มีผู้ให้บริการความคงทนสำหรับ EntityManager ชื่อ agisdb javax.persistence.PersistenceException: ไม่มีผู้ให้บริการที่มีอยู่สำหรับ EntityManager ชื่อ agisdb ที่ javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:89) ที่ javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60) นี่คือpersistence.xml: <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"> <persistence-unit name="agisdb"> <class>com.agis.livedb.domain.AddressEntity</class> <class>com.agis.livedb.domain.TrafficCameraEntity</class> <class>com.agis.livedb.domain.TrafficPhotoEntity</class> <class>com.agis.livedb.domain.TrafficReportEntity</class> <properties> <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/> <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property …
148 java  jpa  persistence  toplink 

26
ไฮเบอร์เนต:“ ฟิลด์ 'id' ไม่มีค่าเริ่มต้น”
ฉันกำลังเผชิญกับสิ่งที่ฉันคิดว่าเป็นปัญหาง่ายๆกับ Hibernate แต่ไม่สามารถแก้ไขได้ (ฟอรัม Hibernate ไม่สามารถเข้าถึงได้อย่างแน่นอนไม่ช่วยอะไร) ฉันมีคลาสง่ายๆที่ฉันอยากจะเรียนต่อ แต่ได้รับ: SEVERE: Field 'id' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [hibtest.model.Mensagem] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) [ a bunch more ] Caused by: java.sql.SQLException: Field 'id' doesn't have a default value [ a bunch more ] รหัสที่เกี่ยวข้องสำหรับคลาสที่คงอยู่คือ: …

4
Java Persistence / JPA: @Column vs @Basic
ความแตกต่างระหว่างคืออะไร@Columnและ@Basicคำอธิบายประกอบใน JPA? สามารถใช้ร่วมกันได้หรือไม่? ควรใช้ร่วมกันหรือไม่? หรือหนึ่งในนั้นพอเพียง?
119 java  jpa  persistence 

3
การใช้ flush () อย่างถูกต้องใน JPA / Hibernate
ฉันกำลังรวบรวมข้อมูลเกี่ยวกับวิธีการ flush () แต่ยังไม่ชัดเจนว่าควรใช้เมื่อใดและจะใช้อย่างไรให้ถูกต้อง จากสิ่งที่ฉันอ่านความเข้าใจของฉันคือเนื้อหาของบริบทการคงอยู่จะถูกซิงโครไนซ์กับฐานข้อมูลนั่นคือการออกคำสั่งที่โดดเด่นหรือการรีเฟรชข้อมูลเอนทิตี ตอนนี้ฉันได้ติดตามสถานการณ์ที่มีสองเอนทิตีAและB(ในความสัมพันธ์แบบหนึ่งต่อหนึ่ง แต่ไม่ได้บังคับใช้หรือจำลองโดย JPA) Aมี PK recordIdคอมโพสิตซึ่งตั้งด้วยตนเองและยังมีสนาม นี้recordIdควรจะเขียนกิจการเป็นต่างประเทศที่สำคัญในการB AฉันกำลังบันทึกAและBในการทำธุรกรรมครั้งเดียว ปัญหาคือว่าค่าสร้างขึ้นโดยอัตโนมัติA.recordIdไม่ได้มีอยู่ในการทำธุรกรรมจนกว่าฉันโทรชัดเจนem.flush()หลังจากเรียกบนem.persist() A(ถ้าฉันมี IDENTITY PK ที่สร้างขึ้นโดยอัตโนมัติค่าจะได้รับการอัปเดตโดยตรงในเอนทิตี แต่นั่นไม่ใช่กรณีนี้) อาจem.flush()ก่อให้เกิดอันตรายใด ๆ เมื่อใช้ภายในธุรกรรมหรือไม่?

9
บริบทความคงอยู่คืออะไร?
ฉันยังใหม่กับโลก Java และ JPA ฉันเรียน JPA และเจอศัพท์ใหม่ ๆ มากมายเช่น Entity, persistence ขณะที่อ่านผมไม่สามารถเข้าใจความหมายที่แน่นอนสำหรับความคงทนบริบท ใครช่วยอธิบายเป็นฆราวาสง่ายๆ จะทำอย่างไรกับข้อมูลที่ใช้ใน@Entity? ตัวอย่างเช่นฉันพบว่าคำจำกัดความนี้ซับซ้อนเกินกว่าที่จะเข้าใจ: บริบทการคงอยู่คือชุดของเอนทิตีที่สำหรับเอกลักษณ์ถาวรใด ๆ จะมีอินสแตนซ์เอนทิตีที่ไม่ซ้ำกัน
111 java  jpa  orm  persistence 

5
localStorage เป็นอย่างไร?
ฉันขึ้นอยู่กับ localStorage อย่างมากสำหรับปลั๊กอินที่ฉันเขียน การตั้งค่าผู้ใช้ทั้งหมดจะถูกเก็บไว้ในนั้น การตั้งค่าบางอย่างต้องการให้ผู้ใช้เขียน regex'es และพวกเขาจะเสียใจหากกฎ regex ของพวกเขาหายไปในบางจุด ตอนนี้ฉันสงสัยว่า localStorage นั้นคงอยู่แค่ไหน จากรายละเอียด : ตัวแทนผู้ใช้ควรหมดอายุข้อมูลจากพื้นที่จัดเก็บภายในเพื่อเหตุผลด้านความปลอดภัยหรือเมื่อผู้ใช้ร้องขอ ข้างต้นดูเหมือนว่ามันจะทำงานเหมือนกับคุกกี้บนไคลเอนต์ กล่าวคือเมื่อผู้ใช้ล้างข้อมูลเบราว์เซอร์ทั้งหมด (ประวัติคุกกี้แคช ฯลฯ ) localStorage จะถูกตัดทอนด้วย สมมติฐานนี้ถูกต้องหรือไม่?

5
เมื่อใดควรใช้ EntityManager.find () เทียบกับ EntityManager.getReference () กับ JPA
ฉันเจอสถานการณ์ (ซึ่งฉันคิดว่ามันแปลก แต่อาจจะค่อนข้างปกติ) ที่ฉันใช้ EntityManager.getReference (LObj.getClass (), LObj.getId ()) เพื่อรับเอนทิตีฐานข้อมูลแล้วส่งคืนวัตถุไปที่ คงอยู่ในตารางอื่น โดยพื้นฐานแล้วการไหลเป็นเช่นนี้: คลาส TFacade { createT (FObj, AObj) { T TObj = ใหม่ T (); TObj.setF (FObj); TObj.setA (AObj); ... EntityManager.persist (TObj); ... L LObj = A.getL (); FObj.setL (LObj); FFacade.editF (FObj); } } @ TransactionAttributeType.REQUIRES_NEW class FFacade { editF …

2
REFRESH และ MERGE หมายถึงอะไรในแง่ของฐานข้อมูล?
ฉันสงสัยและต้องการหาคำตอบนี้โดยด่วน Google จะไม่ช่วยอะไรมาก Java Persistence API มีคุณสมบัติเหล่านี้ที่บอกกรอบงานเพื่อเรียงลำดับการดำเนินการบนเอนทิตีที่เกี่ยวข้อง: CascadeType.PERSIST CascadeType.DELETE CascadeType.MERGE CascadeType.REFRESH ฉันรู้ว่าสองตัวแรกหมายถึงอะไร: เมื่อฉันยังคงวัตถุ A ซึ่งมี B ก็ยังคงมี B เช่นกันและเมื่อฉันลบ A ให้ลบ B ด้วย แต่ฉันไม่สามารถเข้าใจได้ว่าอีกสองคนทำอะไรสำเร็จ ช่วยด้วย?
94 java  jpa  persistence 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.