Configuraciones para Oracle

Conexion

spring.datasource.url=jdbc:oracle:thin:@localhost:1521/FREEPDB1 spring.datasource.username=spring_app spring.datasource.password=spring123 spring.datasource.driver-class-name=oracle.jdbc.OracleDriver spring.jpa.database-platform=org.hibernate.dialect.OracleDialect spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.format_sql=true


Ejemplo relaciones:

package com.example.store.entity; import jakarta.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "categories") public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String name; @OneToMany( mappedBy = "category", cascade = CascadeType.ALL ) private List products = new ArrayList<>(); public Category() { } // getters y setters }


package com.example.store.entity; import jakarta.persistence.*; import java.math.BigDecimal; import java.util.HashSet; import java.util.Set; @Entity @Table(name = "products") public class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) private String name; @Column(nullable = false) private BigDecimal price; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn( name = "category_id", nullable = false ) private Category category; @ManyToMany @JoinTable( name = "product_tags", joinColumns = @JoinColumn(name = "product_id"), inverseJoinColumns = @JoinColumn(name = "tag_id") ) private Set tags = new HashSet<>(); public Product() { } // getters y setters }


Ejemplo relaciones: Muchos a muchos

package com.example.store.entity; import jakarta.persistence.*; import java.util.HashSet; import java.util.Set; @Entity @Table(name = "tags") public class Tag { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, unique = true) private String name; @ManyToMany(mappedBy = "tags") private Set products = new HashSet<>(); public Tag() { } // getters y setters }

N + 1

@ManyToOne(fetch = FetchType.LAZY)

@ManyToOne(fetch = FetchType.EAGER)