简体   繁体   中英

How to pass a arraylist to a database in java

I have Created a new derby database with hibernate.I am able to create a database in the Apache derby.I am able to get the data from nodes in xml.And store it in the arraylist.I do know how to pass the arraylist contant to the database class.

xml.java

       public class xml_read {

    public static void main(String argv[]) {

    try {

     File fXmlFile = new File("c:\\testing.xml");
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);
    doc.getDocumentElement().normalize();

   // System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
    NodeList nList = doc.getElementsByTagName("device");
   // System.out.println("-----------------------");

for (int temp = 0; temp < nList.getLength(); temp++) {

   Node nNode = nList.item(temp);       
   if (nNode.getNodeType() == Node.ELEMENT_NODE) {

     Element eElement = (Element) nNode;
     ArrayList arrayList = new ArrayList();

     //System.out.println(arrayList);
     String type=getTagValue("type", eElement);
     String Name=getTagValue("name", eElement);
     String Setup=getTagValue("setup", eElement);
     arrayList.add(type);
     arrayList.add(Name);
     arrayList.add(Setup);
     System.out.println(arrayList);
      System.out.println("type : "  + getTagValue("type",eElement));
      System.out.println("Name : "  + getTagValue("name",eElement));
      System.out.println("Set up : "  + getTagValue("setup",eElement));


    }
  }
       } catch (Exception e) {
           e.printStackTrace();
    }
   }

    private static String getTagValue(String sTag, Element eElement){
  NodeList nlList= eElement.getElementsByTagName(sTag).item(0).getChildNodes();
  Node nValue = (Node) nlList.item(0); 

  return nValue.getNodeValue();    
  }

 }

device.java

   public class Device  {
    private String type;
    private String setup;
    private String name;
    private Long deviceId;
    private Set<CommandInfo> commandSet = new HashSet<CommandInfo>(); 

    public Device() {

    }

    public Device(String name, String type, String setup) {
            System.out.println("name = "+name+" type = "+type+" setup = "+setup);
            this.name = name;
            this.type = type;
            this.setup = setup;
    }

    /**
     * @return the type
     */
    public String getType() {
        return type;
    }

    /**
     * @param type the type to set
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * @return the setup
     */
    public String getSetup() {
        return setup;
    }

    /**
     * @param setup the setup to set
     */
    public void setSetup(String setup) {
        this.setup = setup;
    }

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * @return the id
     */
    @Id
    @GeneratedValue
    @Column(name = "DEVICE_ID")
    public Long getDeviceId() {
        return deviceId;
    }

    /**
     * @param id the id to set
     */
    public void setDeviceId(Long id) {
        this.deviceId = id;
    }

    /**
     * @return the commandSet
     */
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "DEVICE_COMMAND", joinColumns = { 
            @JoinColumn(name = "DEVICE_ID") }, 
            inverseJoinColumns = { @JoinColumn(name = "COMMAND_ID") 
    })
    public Set<CommandInfo> getCommandSet() {
        return commandSet;
    }

    /**
     * @param commandSet the commandSet to set
     */
    public void setCommandSet(Set<CommandInfo> commandSet) {
        this.commandSet = commandSet;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("Device [type=");
        builder.append(type);
        builder.append(", setup=");
        builder.append(setup);
        builder.append(", name=");
        builder.append(name);
        builder.append(", deviceId=");
        builder.append(deviceId);
        builder.append(", commandSet=");
        builder.append(commandSet);
        builder.append("]");
        return builder.toString();
    }


       }

I need to pass the arraylist values to device class.Can any one help me how to pass the value to device class

If you use a collection type (eg Set in your case), you have to specify how this collection is mapped to another database table. So in your object it is a directly accessible collection of sub objects, but in your database it's still separated in 2 tables having a 1:n or n:m relation.

If you use JPA, just specify the relationship in the annotation:

@OneToMany(mappedBy = "sale")
private List<Sale> saleList;

In JPA 2.0 you can even avoid having to specify a separate entity in case you only use basic types:

@ElementCollection@CollectionTable(name="item")
@Column(name="name")
private List<String> items;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM