79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| aliases:
 | ||
|   - JPA
 | ||
| ---
 | ||
| up:: [[EJB entity bean]]
 | ||
| #s/informatique/langage/java 
 | ||
| 
 | ||
| Annotations java qui permettent de créer facilement des [[EJB entity bean|entity beans]] 
 | ||
| 
 | ||
| Documentation : http://www.objectdb.com/api/java/jpa
 | ||
| 
 | ||
| 
 | ||
| # Exemples 
 | ||
| 
 | ||
| ```java
 | ||
| @Entity
 | ||
| public class Book {
 | ||
|     @Id
 | ||
|     @GeneratedValue(strategy = GenerationType.AUTO)
 | ||
|     private Long id;
 | ||
|     @Column(name = "book_title", nullable = false, updatable = false) private String title;
 | ||
|     private Float price;
 | ||
|     @Column(length = 2000)
 | ||
|     private String description;
 | ||
|     private String isbn;
 | ||
|     @Column(name = "nb_of_page", nullable = false)
 | ||
|     private Integer nbOfPage;
 | ||
|     private Boolean illustrations;
 | ||
|     @Basic(fetch = FetchType.LAZY)
 | ||
|     @Lob
 | ||
|     private byte[] audioText;
 | ||
| 
 | ||
|     // Constructors, getters, setters ...
 | ||
| }
 | ||
| ```
 | ||
| 
 | ||
| - `@Column` : préférences pour les colonnes (de la BDD)
 | ||
|     - `name, unique, nullable, insertable, updatable, table, length, precision, scale...`
 | ||
| - `@GeneratedValue` : stratégie de génération automatique des clefs primaires
 | ||
|     - stratégie recommandée : `GenerationType.auto`
 | ||
| - `@Lob` : "Large object" (notamment pour les BLOB : Binary Large OBject)
 | ||
|     - Souvent utilisé avec `@Basic(fetch = FetchType.LAZY)` indiquer un chargement lazy (seulement au moment du get de cet attribut).
 | ||
| 
 | ||
| ## Colonnes composites
 | ||
| ```java
 | ||
| @Embeddable
 | ||
| public class Address {
 | ||
|     protected String street;
 | ||
|     protected String city;
 | ||
|     protected String state;
 | ||
|     @Embedded
 | ||
|     Zipcode zipcode;
 | ||
| }
 | ||
| 
 | ||
| @Embeddable
 | ||
| public class Zipcode {
 | ||
|     String zip;
 | ||
|     protected String plusFour;
 | ||
| }
 | ||
| ```
 | ||
| 
 | ||
| 
 | ||
| ## Clef primaire composite
 | ||
| ```java
 | ||
| @Embeddable 
 | ||
| public class CompositeId {
 | ||
|     String name;
 | ||
|     String email;
 | ||
| }
 | ||
| 
 | ||
| @Entity 
 | ||
| public class Dependent {
 | ||
|     @EmbeddedId  // indique que la clef primaire est dans une autre classe
 | ||
|     CompositeId id;
 | ||
| 
 | ||
|     @ManyToOne
 | ||
|     Employee emp;
 | ||
| }
 | ||
| ``` |