# Automatisches Erstellen der gemammote Objekte in Entitäten



## claireannelage (10. Mai 2021)

Ich habe in der Überschrift verstehentlich ein Wort eingeführt - es kann doch nicht so schwer sein das zu ändern ??

Es ist schon etwas her dass ich mit JPA und ORM befasst habe. Ich habe noch ein altes Lernscript von mir, was neben JPA überwiegend Spring nutzt. Die Config stelli im lnWentlichen einen Enitimanager, einen Transctionmanger und der Klasse der Datensource. Nun muss ich zu Beginn ja erstmal die Objekte in Entitären umwandeb, damit ich die Daten in Tabelle strukturiere. Wenn möglich in einem einigernaßen verstädlichem Tutorial. Eas ich möchte ich das Script bei erste mal durchlaufen lassen und dann die Tabellenstruktur anhand der Objeklasse in der Datenbank wiederfinden.


Falls es eine Roll spielt hätte ich noch die Konfigdate der Database
[CODE lang="java" title="Databaseconfig.java"]
@Configuration
@ComponentScan(basePackages = {"comonent.database.worker","component.database.util"})
@EnableJpaRepositories("component.database.repository")

public class DatabaseConfig
{
  @Autowired
  private Environment environment;

  @Bean
  public PlatformTransactionManager transactionManager()
  {
    EntityManagerFactory factory = entityManagerFactory().getObject();
    return new JpaTransactionManager(factory);
  }

  @Bean
  public LocalContainerEntityManagerFactoryBean entityManagerFactory()
  {
    LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();

    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(Boolean.TRUE);
    vendorAdapter.setShowSql(Boolean.TRUE);

    factory.setDataSource(dataSource());
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan("com.conleos.holidaymanager.database.domain");

    return factory;
  }

  @Bean
  public DataSource dataSource()
  {
    DriverManagerDataSource dataSource = new DriverManagerDataSource(environment.getProperty("spring.datasource.url"));
    dataSource.setDriverClassName(environment.getProperty("spring.datasource.driver-class-name"));
    dataSource.setUsername(environment.getProperty("spring.datasource.username"));
    dataSource.setPassword(environment.getProperty("spring.datasource.password"));

    return dataSource;
  }
}[/CODE]


----------



## mrBrown (10. Mai 2021)

claireannelage hat gesagt.:


> Ich habe in der Überschrift verstehentlich ein Wort eingeführt - es kann doch nicht so schwer sein das zu ändern ??


Wenn du sagst, was dort stattdessen stehen soll, können Moderatoren oder Admins das eben anpassen, am besten über den Report-Button unter dem Beitrag eben melden


----------



## kneitzel (10. Mai 2021)

Evtl. auch noch einmal etwas verständlicher sagen, was Du genau meinst. Irgendwie blicke ich da gerade nicht wirklich durch ...

Wenn Du Entities hast, dann kannst Du die mittels des EntityManagers persistent machen. Dazu dient persist oder auch merge.

Aber oft reicht es einfach aus, über das Repository Daten zu lesen / zu schreiben. 

Aber wie gesagt: Ich verstehe gerade nicht wirklich, worum es Dir genau geht, daher weiss ich auch nicht, wonach Du suchst ...


----------



## claireannelage (10. Mai 2021)

Erstens habe ich keinen Entitymanager, lediglich eine Factory die aber einen JpaTransactionManager ezeugt. Ich muss das ganze in eine andere Sprache überführen, daher ist es ist brauche das Verständnis  wie über ORM bei ersten Nutzung die Obekt in Entities in der DB unwandelt.


----------



## kneitzel (10. Mai 2021)

Also die EntityManagerFactory hat z.B. eine Methode createEntityManager() um an einen EntityManager zu kommen.

Aber wenn Du Spring nutzt, dann brauchst Du das doch gar nicht. Schau Dir z.B. mal https://spring.io/guides/gs/accessing-data-jpa/ an um Spring Data mit JPA anzusehen. Da siehst Du, wie es ganz einfach über z.B. ein CrudRepository gehen kann.

Somit ist jetzt weiter meine Frage: Was willst Du genau? Wenn Du keine Ahnung hast, dann sind Guides eine gute Sache - z.B. der verlinkte Guide zu Spring Data mit JPA.


----------



## mrBrown (10. Mai 2021)

claireannelage hat gesagt.:


> Ich muss das ganze in eine andere Sprache überführen


In der Art von Java+Spring zu JavaScript oder wie?



claireannelage hat gesagt.:


> brauche das Verständnis wie über ORM bei ersten Nutzung die Obekt in Entities in der DB unwandelt.


_Irgendwo_ (vermutlich gekapselt in einer Repository oder DAO) gibt es ein EntityManager#persist, aber ich befürchte, das wird dir kaum weiterhelfen, wenn du von JPA (und/oder) Spring Data weg willst.


----------



## claireannelage (11. Mai 2021)

Das ganze soll nach Python überführt werden, und obwohl es da so etwas wie einen Entitymanager gibt soll die ganze Schicht mit sqlAchemie verwaltet werden. Und dazu muss ich wissen wie man da logisch vorgeht  wenn Objkekte in  Entitäten umwandelt. Annotationen kann man auch nicht nutzen


----------



## kneitzel (11. Mai 2021)

Jetzt wird das ganze verständlicher.

Aber damit ist as eine python und sqlAlchemy Frage. Aber ohne konkrete Frage, ist es da auch schwer, irgendwas zu sagen.






						SQLAlchemy ORM Examples | Python Central
					

ORM Recap In one of the previous articles, we briefly went through an example database with two tables department and employee where one department can have multiple employees and one employee can belong to arbitrary number of departments. We used several code snippets to demonstrate the power...




					www.pythoncentral.io
				



Hier findest Du einfache Beispiele, angefangen von den classes, die man hier für die Entities erstellt (und die dann sozusagen die Tabellenstruktur wiederspiegeln) über die Initialisierung hin zu den Abfragen.

Ebenfalls bestimmt hilfreich die Tutorials:





						Library - SQLAlchemy
					






					www.sqlalchemy.org


----------



## mrBrown (11. Mai 2021)

Da es dort um Grundsatz völlig anders funktioniert, macht es mMn keinen Sinn, das ganze von der technischen Seite aus zu verstehen und versuchen umzusetzen, sondern es ist eher sinnvoller, das ganze von einer eher fachlichen Sicht aus anzugehen.


----------

