Andre typer anmodninger

All lectures for DA purposes
Niveau , Lektie
Ledig

6.1 Navngivne forespørgsler

Hibernate giver dig mulighed for ikke at gemme forespørgsler direkte i koden. I stedet foreslår han at give forespørgsler navne og gemme dem separat som anmærkninger. Nå, så tag den ønskede anmodning direkte ved sit navn. Eksempel:

@org.hibernate.annotations.NamedQueries({
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindById",
  	query = "from Employee where id = :id"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_FindAllEmployes",
  	query = "from Employee"),
    @org.hibernate.annotations.NamedQuery(name = "Employee_UpdateEmployeeName",
  	query = "Update Employee set name = :newName where id = :id"),
...
})

Annoteringer kan tilføjes før enhver enhedsklasse: forespørgselsnavne er ikke knyttet til nogen enhed.

Du kan også tilføje forskellige parametre til forespørgslen (forespørgsel):

@org.hibernate.annotations.NamedQuery(
  name = "Employee_ FindAllEmployes",
  query = "from Employee",
  timeout = 1,
  fetchSize = 10,
  cacheable = true,
  cacheMode = "GET"
)

Det er meget enkelt at bruge sådanne anmodninger - til dette skal du bruge en metode createNamedQueryi stedet for en metode createQuery:


Query<Employee> query = session.createNamedQuery("Employee_FindAllEmployes", Employee.class);
List<Employee> resultLIst = query.list();

6.2 NativeQuery

Og en anden enkel, men meget nyttig ting er NativeQuery .

Hvis du ikke vil bruge HQL, men vil bruge Hibernate til entity mapping, så kan du skrive forespørgsler i god gammel SQL. Ingen begrænser dig.

For at gøre dette skal du blot kalde metoden createNativeQuery()i stedet for createQuery().


NativeQuery<Employee> query = session.createNativeQuery("select * from employee", Employee.class);
List<Employee> resultLIst = query.list();

Du skriver bare createNativeQueryog alt fungerer som før. Denne metode returnerer et objekt af typen NativeQuery , som understøtter alle de metoder, som Query- klassen understøtter . Intet vil ændre sig for dig.

Derudover kan Native SQL Query også gemmes som navngivne forespørgsler .


@org.hibernate.annotations.NamedNativeQueries(
    @org.hibernate.annotations.NamedNativeQuery(name = "Employee_GetAll",
  	query = "select * from employee",
  	resultClass = Employee.class)
)

Og her er selvfølgelig koden til at arbejde med dem:


NativeQuery<Employee> query = session.createNamedQuery("Employee_GetAll", Employee.class);
List<Employee> resultLIst = query.list();

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION