Forumi
Home Pravila i pomoć Članovi Kalendar Današnji postovi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 19.03.2012., 17:19   #1
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
Pomoc oko java hibernatea...

Pozdrav, trebao bih pomoć oko sljedeceg "problema".

zamolio bih nekoga da mi preko hibernatea i mappinga u javi pokaze kako da napravim select querry na bazi... napravio sam update na bazu, al za select nikako da nadjem nesto na netu sta funkcionira i da primjenim na svome primjeru. Stavit cu najkrace klase da ne spamam.

KLASA Posao

public class Posao {
private int sifra;
private String opis;
public int getSifra(){
return sifra;
}
public void setSifra(int sifra){
this.sifra=sifra;
}
public String getOpis(){
return opis;
}
public void setOpis(String opis){
this.opis=opis;
}
}


mapping za nju Posao.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name ="Posao" table ="posao">
<id name = "sifra" column ="sifra" type="int"/>
<property name="opis" column="opis" type="string"/>
</class>
</hibernate-mapping>



i evo napokon unosa u bazu

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class UnosPosla {
public void unosPosla(){
try {
//hibernate konfiguracija
Configuration cfg = new Configuration();
SessionFactory factory = cfg.configure().buildSessionFactory();
Session session = factory.openSession();

//unos podataka posao

String sifra = Citac.getInput("Unesite sifru posla: ");
String opis = Citac.getInput("Unesite opis posla: ");

Posao p = new Posao();

p.setSifra(Integer.parseInt(sifra));
p.setOpis(opis);

Transaction tx = session.beginTransaction();

session.saveOrUpdate(p);

tx.commit();

System.out.println("Podaci uspjesno unešeni\n"
+"SIFRA POSLA: "+sifra+"\nOPIS: "+opis);

session.close();
}

catch (Exception e){
System.out.println("greska: "+e);

} } }


Znaci to sve radi. citac je zasebna klasa naravno, nije potrebna tu... e sad mene zanima kako na isti takav nacin napraviti querry da se ispisu ta dva stupca iz baze... ja sam to ovako napravio kako cu staviti dolje..a treba mi kako to napraviti putem hibernatea


import java.sql.*;
public class IspisPoslova {
public void ispisPoslova(){
Connection con = null;
PreparedStatement pst = null;
ResultSet rs = null;

String url = "jdbc:mysql://localhost:3306/carnet";
String user = "mane";
String password = "fpcfvp";

try { con = DriverManager.getConnection(url, user, password);
//pst = con.prepareStatement("SELECT * FROM zaposlenik");

pst= con.prepareStatement("SELECT * FROM POSAO");

rs = pst.executeQuery();

System.out.println("SIFRA\t\tOPIS");
System.out.println("---------------------------------------------");

while (rs.next()){
//pokupi podatke iz tablice zaposlenik
int sifra = rs.getInt("SIFRA");
String opis = rs.getString("OPIS");

System.out.println(sifra+"\t\t"+opis);
}
}
catch( SQLException se ) {
System.out.println ("SQLError: " + se.getMessage ()
+ " code: " + se.getErrorCode());
}
catch( Exception e ) {
System.out.println(e.getMessage());
e.printStackTrace();
}
finally{

try{
rs.close();
pst.close();
con.close();
} catch(Exception e){
e.printStackTrace();
}} }}

evo zamolio bih nekoga da mi napravi na ovom jednostvanom primjeru putem hibernatea kako to izvest.. ukoliko nije problem. hvala puno
Mane je offline   Reply With Quote
Staro 19.03.2012., 18:58   #2
klint.istvud
Premium
 
klint.istvud's Avatar
 
Datum registracije: Nov 2001
Lokacija: Zagreb
Postovi: 133
googlanjem: java hibernate query example

prvi link ti daje primjer


za tvoj slučaj bi to išlo ovako nekako:

Code:
Query query = session.createQuery("from Posao");
List<Posao> list = query.list();

Zadnje izmijenjeno od: klint.istvud. 21.03.2012. u 18:48.
klint.istvud je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 20.03.2012., 11:23   #3
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
hvala klint...nasao sam ja dosta takvih primjera... ali ja kada to stavim u klasu ovu di mi je unos u bazu...kao dolje dodam samo da ispise nakon unosa sadrzaj baze... dodam tako dio koda i to nikad nece da radi. evo dodao sam ovo sta si ti napisao i javlja za List<Posao> list = query.list(); - type org.hibernate.mapping.list does not take parameters... googlao sam ja stvarno za to..al sta god sam nasao baca neki error...pitam tu jer nemam neko veliko znanje u javi, tek učim... i sad ne znam dal ja uopce mogu to koristiti unutar klase di je unos..pa prije session.close(); da to stavim :S ili sta? evo sad sam ovako napravio i importao sam java.util.list za taj List (ne hibernate.list)..nema gresaka..al naravno fali mi System.out da nesto ipise... naravno ako stavim System.out.println(z.getMat_br()); ce mi povuc pretpostavljam od zadnjega ili tako nesto... sta treba neku WHILE petlju napravit ili kako . i mislim da mi zbog Posao posao = new Posao(); i session.saveOrUpdate(posao); svaki put doda jedan posao bez naziva..ali mu da auto inc jer sam to nastiamo. znaci pretpostavljam da mi je to visak kod ispisa



public class IspisPoslova{
public void ispisPoslova(){
try {
//hibernate konfiguracija
Configuration cfg = new Configuration();
SessionFactory factory = cfg.configure().buildSessionFactory();
Session session = factory.openSession();
Posao posao = new Posao();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(posao);

tx.commit();
Query query = session.createQuery("from Posao");
List<Posao> list = query.list();

Zadnje izmijenjeno od: Mane. 20.03.2012. u 13:32.
Mane je offline   Reply With Quote
Staro 20.03.2012., 22:45   #4
klint.istvud
Premium
 
klint.istvud's Avatar
 
Datum registracije: Nov 2001
Lokacija: Zagreb
Postovi: 133
za sve dobro slutiš

- koristi java.util.List
- za ispis probaj:
Code:
System.out.println("Lista: " + list.toString());
ili iteriraj s for petljom kroz listu i ispisuj svaki element.
Code:
for (Posao p : list)
  System.out.println(p);
- u funkciji za ispis s ovim dijelom koda ti svaki puta dodaješ novi element,
to izbaci van:
Code:
Posao posao = new Posao();
Transaction tx = session.beginTransaction();
session.saveOrUpdate(posao);
tx.commit();
klint.istvud je offline   Reply With Quote
Staro 21.03.2012., 13:59   #5
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
again puno ti hvala klint.... al to meni nikako nece da radi... izbaci mi za ovu klasu dolje... ovo:
Posao@72f53805
Posao@78f14616
Posao@28308c62
znaci klasa se pokrene i nema gresaka...al ne izlista nista osim smeca..u tablici ima podataka sigurno. i ovo sam probao:
System.out.println("Lista: " + list.toString());ista stvar samo u nizu ispise smece... ne znam dal sam ja lud ili sta ^^

edit: evo napokon sam uspio sa nekog primjerica izvuc ispis... pa ga implementirati kod sebe... ovako izgleda, malo mi je nejasan taj iterator doduse kako je napravljen al ajde dobro je, mozda uspijem to nekako "citkije" preradit . Napravio sam na primjeru zaposlenika ne posla. Hvala ti puno na trudu

public class IspisZaposlenika{
public void ispisZaposlenika(){

try {

Configuration cfg = new Configuration();
SessionFactory factory = cfg.configure().buildSessionFactory();
Session session = factory.openSession();

List zaposlenici = session.find("from Zaposlenik");
System.out.println( zaposlenici.size() + " prijavljenih zaposlenika pronađeno" );
-----------------------------------------------------------
for ( Iterator iter = zaposlenici.iterator(); iter.hasNext(); ) {
Zaposlenik zapo = (Zaposlenik) iter.next();
System.out.println(zapo.getMat_br()+"\t"+zapo.getIme()+
"\t\t"+zapo.getPrezime());
}----------------------------------------------------------------

session.close();
}

catch (Exception e){
System.out.println("greska: "+e);
}

} }

Zadnje izmijenjeno od: Mane. 21.03.2012. u 18:38.
Mane je offline   Reply With Quote
Staro 21.03.2012., 18:46   #6
klint.istvud
Premium
 
klint.istvud's Avatar
 
Datum registracije: Nov 2001
Lokacija: Zagreb
Postovi: 133
nije to smeće

to ti je zato što se kod ispisa objekta (u ovom slučaju to je Posao) poziva metoda toString() a kako je ti vjerojatno nisi definirao u klasi Posao, onda ti se pozove toString metoda Object klase (to je klasa koju koju nasljeđuju sve klase u Javi) i ona ti vrati, to što ti vrati

Znači u klasi Posao definiraj toString metodu koja će nadjačati toString metodu Object klase npr. ovako nešto:

Code:
public class Posao {
...
public String toString() {
  return "sifra=" + sifra + " | " + "opis=" + opis;
}
}

p.s. radi preglednosti, programski kod koji pišeš tu na forumu stavljaj u CODE dio.
klint.istvud je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na