Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a class dynamically in java

I don't know if this is even possible. Anyway, here is my problem: I want to create a Class having a database table schema, for example suppose that I have a table like

id - unsigned int 
username - varchar(128)
password - varchar(128)

and let's assume I can query this data from my db. What I want to do is to dynamically create (and, of course, instantiate) a Java class that should look like this:

public class User{
    private unsigned int id;
    private String username;
    private String password;
}

(actually an ActiveRecord for my table)

Can you help me starting this? Tnks

like image 852
ArtoAle Avatar asked Jan 25 '11 14:01

ArtoAle


People also ask

Can I create a class dynamically in Java?

Dynamic Class creation enables you to create a Java class on the fly at runtime, from source code created from a string. Dynamic class creation can be used in extremely low latency applications to improve performance.

What is a dynamically generated class?

This class dynamically creates a module in the project. It inherits from the Module class in System. Reflection. Emit and impliments a _ModuleBuilder interface. This class also has no constructor, hence an object of the class can be created using the DefineDynamicModule function of the assembly builder class.


3 Answers

What would you do with a dynamically created and instantiated class that none of your other code knows about?

For a stically typed language like Java, it makes little sense to have such classes. On the other hand, most OR Mappers like Hibernate come with tools that allow you to statically generate classes from a database schema.

like image 147
Michael Borgwardt Avatar answered Sep 19 '22 02:09

Michael Borgwardt


Technically, you can, via a bytecode manipulation library - CGLIB, javassist, asm, bcel and the likes.

However, this is not the Java "philosophy". Java is statically-typed, so you'd better create the classes before runtime.

Take a look at hibernate / eclipseLink for Java ORM - a way of mapping tables to objects.

like image 27
Bozho Avatar answered Sep 20 '22 02:09

Bozho


I think what you want is the facility provided by java.lang.reflect.Proxy and related classes.

like image 29
Pointy Avatar answered Sep 21 '22 02:09

Pointy