Is it necessary to generate a private key for each encryption process?
As you have correctly identified, there is a problem that with public key encryption you cannot encode long messages in an efficient way. Your message must be an element of a finite group and may therefore not exceed a certain number of bits.

Therefore often a hybrid approach with symmetric and asymmetric encryption is used. That is: 


The sender encrypts his long message using a symmetric algorithm, using a randomly chosen secret key K.
The sender encrypts the secret key K using the public key of the recipient.
The sender sends the symmetrically encoded message and the asymmetrically encoded key K to the recipient.
The recipient first recovers K and then decrypts the long message.